gpt4 book ai didi

oracle - 字符编码问题 - Oracle SQL

转载 作者:行者123 更新时间:2023-12-04 18:45:30 24 4
gpt4 key购买 nike

我对远程数据库做了一个简单的查询。我进行查询的表具有 VARCHAR2 的所有字段。但是,某些字段返回“?”在像º、£这样的字符中。我检查了编码并得到:

NLS_CHARACTERSET: AL32UTF8
NLS_NCHAR_CHARACTERSET:AL16UTF16

检查我的/etc/default/locale 文件。这些是结果:
LANG="en_US.UTF-8"
LC_NUMERIC="pt_BR.UTF-8"
LC_TIME="pt_BR.UTF-8"
LC_MONETARY="pt_BR.UTF-8"
LC_PAPER="pt_BR.UTF-8"
LC_NAME="pt_BR.UTF-8"
LC_ADDRESS="pt_BR.UTF-8"
LC_TELEPHONE="pt_BR.UTF-8"
LC_MEASUREMENT="pt_BR.UTF-8"
LC_IDENTIFICATION="pt_BR.UTF-8"

两个边缘的编码都是 UTF-8。我还缺少其他配置吗?

最佳答案

当您说“某些字段返回”时?在像...'这样的字符中,我认为这会显示在您的屏幕上,对吧?你不知道真正返回了什么,你只知道屏幕上的内容。

要查看真正返回的内容,您可以执行类似的操作

select dump('£500') from dual;

DUMP('£500')
--------------------------
Typ=96 Len=4: 163,53,48,48

编辑 :正如下面评论中所讨论的,如果您在终端上完全键入该命令并且您确实遇到了显示问题,您会在进入的过程中看到垃圾。相反,要查看数据库中存储的内容,您必须引用一个实际的表,以及其中包含这些字符串值的列。例如,如果表 TBL 中的列名是 COL1,并且还有一个 ID 列,并且对于 ID = 1000,您有一个带有井号的 COL1 值,运行
select dump(COL1) from TBL where ID = 1000;

显然,输入没有问题,因为输入不再有井号(就像我的第一个示例一样)。但是在退出时,DUMP 可能会显示正确的字符 - 但是您的显示器无法正确显示它。

结束编辑

如果您在 DUMP 中看到代码 163,则表示井号已正确存储在数据库中,问题只是它在屏幕上的显示方式。在这种情况下,您的 NLS_LANG 设置可能存在问题。这里有很好的信息:

http://www.oracle.com/technetwork/products/globalization/nls-lang-099431.html

如果您发现您必须经常使用不同的字符集,您可能会从仔细阅读本文中受益。它将向您展示如何找出您当前的字符集是什么,如何更改它,以及为什么人们会看到的“显而易见”的东西实际上并不是很有帮助。这个问题不是太复杂,但也不是微不足道的。

关于oracle - 字符编码问题 - Oracle SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44763280/

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