gpt4 book ai didi

sql - oracle中PL/SQL中文乱码

转载 作者:行者123 更新时间:2023-12-04 15:53:36 25 4
gpt4 key购买 nike

我的 oracle 版本是 11g,安装在 linux 上。客户端是xp。

现在,通过PL/SQL查询数据和中文抓取;像这样(字段名称):
enter image description here

在 pl/sql 中执行命令:"select userenv('language') from dual;"并显示

SIMPLIFIED CHINESE_CHINA.AL32UTF8(I think it is Server-side character set)



于是我查看了 Windows xp 注册表:HKEY_LOCAL_MACHINE->SOFTWARE->Oracle->NLS_LANG。
它显示:

SIMPLIFIED CHINESE_CHINA.ZHS16GBK (I think it is Client-side character set)



我把它改成

SIMPLIFIED CHINESE_CHINA.AL32UTF8



但是中文还是乱码。

而且,这个“NAME”字段实际上应该显示:“北京市”。

我执行命令:
select dump(name,1016) from MN_C11_SM_S31 where objectid=1;
并显示: enter image description here

这是否意味着存储的数据本身不正确?
我应该怎么做?

补充:只是,我用C#代码通过UTF-8解析这个字符串:"e58c97e4baace5b882"。

并显示:“北京市”。我想这证明数据本身并没有错。

最佳答案

你需要小心。
SQLplus 和 OracleSqlDeveloper 实际上可能会错误地显示中文字符。
并且您需要为中文字符串取一个 nvarchar (utf8) 字段。

尝试使用 C# Windows 应用程序输入、插入和显示数据,它内部使用 unicode,因此您至少可以排除该错误源。不要使用控制台应用程序进行显示,控制台应用程序无法正确显示 Unicode 字符。

然后,您需要将字符串存储在 nvarchar 字段(不是 varchar)中,并在插入字符串时使用 nvarchar 类型的参数。

INSERT INTO YOUR_TABLE (newname)
VALUES (:UnicodeString)

command.Parameters.Add (":UnicodeString", OracleType.NVarChar).Value = stringToSave;

关于sql - oracle中PL/SQL中文乱码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19677429/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com