当前位置: 首页 > 面试题库 >

Oracle中的NLS_CHARACTERSET WE8ISO8859P1和UTF8问题

曹高轩
2023-03-14
问题内容

我当前正在html" target="_blank">oracle中使用具有NLS_CHARACTERSET
WE8ISO8859P1的数据库,因此可以说我在varchar2字段中存储了一个值为maž(带重音字符)的值,因此在数据库中将其存储为maå¾。现在,当我尝试使用查询select * from table从其中fieldValue =’maž’检索它时,它返回0行,然后当我尝试再次插入它时,它给了我一个约束错误,说值已经存在。

如何克服这种情况。我正在通过Java代码执行此操作


问题答案:

http://docs.oracle.com/cd/B19306_01/server.102/b14225/ch2charset.htm#g1009784

Oracle字符集名称:WE8ISO8859P1
描述:西欧8位ISO 8859第1部分
区域:WE(西欧)
用于表示字符的位数:8

另一方面,UTF-8使用几个字节来存储符号。

如果您的数据库使用WE8ISO8859P1,并且列类型来自VARCHAR组(而不是NVARCHAR),并且您要插入代码>
255的符号,则该符号将转换为WE8ISO8859P1,并且某些信息将丢失。

简而言之,如果将UTF-8插入具有单字节字符集的db中,则数据将丢失。

上面的链接描述了不同情况下如何解决此问题。

您也可以尝试使用Oracle asciistr/ unistr函数,但总的来说,这不是解决此类问题的好方法。



 类似资料:
  • 问题内容: 我有下表: 我要插入数据,如下所示: 但是,当我检索数据时,它们类似于。 有什么问题,我该如何解决? 问题答案: 根据MySQL JDBC驱动程序文档,您还需要在JDBC连接URL中设置字符编码。这是一个例子: 否则,MySQL JDBC驱动程序将使用平台默认编码在通过网络发送之前将字符转换为字节,在您的情况下显然不是UTF-8。然后,所有未发现的字符将被问号替换。 另外,在检索数据时

  • 问题内容: 我正在将WordPress博客和phpBB论坛迁移到新的托管服务器中。我正在使用phpMyAdmin从先前站点中的数据库导入SQL脚本。 当我用Kate打开.sql脚本时,它说它使用UTF8作为编码。当我在新服务器中导入sql时,可以在phpMyAdmin中选择编码,默认情况下选择utf8。 仍然,当我完成数据库的导入后,我直接在phpMyAdmin中阅读了帖子文本,并看到诸如“é”,

  • 本文向大家介绍PHP和Mysql中转UTF8编码问题汇总,包括了PHP和Mysql中转UTF8编码问题汇总的使用技巧和注意事项,需要的朋友参考一下 一个网站如果需要国际化,就需要将编码从GB2312转成UTF-8,其中有很多的问题需要注意,如果没有转换彻底,将会有很多的编码问题出现! PHP页面转UTF-8编码问题 1.在代码开始出加入一行: header("Content-Type: text/

  • 问题内容: 如标题所述,我在java和mysql之间有问题 mysql数据库,表和列是utf8_unicode_ci。我有一个应用程序,它从xml中获取一些输入,然后编写查询… 此方法返回包含一个或多个SQL插入查询的String数组。然后 和和特殊字符都存储为? 因此特殊字符无法正确存储: 存储为 存储为 有什么建议吗? 谢谢 问题答案: 解决了,我忘了在初始化Connection时添加编码:

  • 问题内容: 我有一些来自json文件的文本。在本文中,我应用了UTF8编码,但是该编码器无法识别非标准字符,并且为大写字符,是否有一种方法可以净化我的字符串? 我的功能: 问题答案: 我找到了解决方案。 UTF8采用8位表ASCII表,而UTF16采用16位ASCII表,解决方案很简单,只需将函数修改为:

  • 问题内容: 我可以看到它们与我创建字符串所用的字节不同!我已经使用“ AES / CBC / PKCS5Padding”来获取字符串。 问题答案: 当您按原样对字符串进行解码时,是因为您将字节编码为UTF-8或兼容格式。您不能只取一个随机字节并将其转换为字符串,因为它是二进制数据而不是文本。 您可以做的是对二进制文件使用Base64编码器,并使用Base64解码器将其转换回原始字节。 这样做的一种