我遇到了一个问题,插入一个Oracle数据库的字符。
INSERT操作成功完成,但是,当我执行SELECT时,得到的是n而不是n。
此外,我注意到执行:
select 'ñ' from dual;
给我“否”。
select * from nls_database_parameters where parameter='NLS_CHARACTERSET';
给我“EE 8 MSWIN 1250”
我该如何插入?我希望避免修改数据库设置。
我唯一能让它工作的方法就是:
1.读取这输入.csv文件与它的windows-1250编码
1.更改编码为unicode
1.将字符串更改为unicode代码表示(其中为\00d1)
1.执行INSERT/UPDATE,将值从#3传递到UNISTR函数
当然,有一个更简单的方法来实现这一点。
3条答案
按热度按时间yquaqz181#
最简单的方法是,使用
ASCII()
找出字符的ASCII
,然后插入useCHR()
以转换回字符串。SQL语句:
输出:
用来连接数据库的客户端很重要。有些客户端不支持这些字符。
fae0ux8s2#
在启动SQL*Plus之前,必须相应地设置代码页(使用
chcp
命令)和NLS_LANG
环境参数:然而,正如评论中已经给出的,Windows 1250不支持字符
ñ
。所以,这些值将不起作用。不一定要将这些值设置为与数据库字符集相同,但是代码页和
NLS_LANG
必须匹配,即以下值也应该有效(因为它们都支持ñ
)或支持任何UTF-8字符
同样,EE 8 MSWIN 1250不支持字符
ñ
,除非列的数据类型为NVARCHAR2
(或NCLOB
),否则无法在数据库中存储ñ
。mgdq6dx13#
数据库字符集支持该字符吗?我在此处找不到该字符:https://en.wikipedia.org/wiki/Windows-1250
我在数据库中插入字符集为WE8MSWIN1252. https://en.wikipedia.org/wiki/Windows-1252的字符时没有遇到任何问题