【发布时间】:2012-01-09 21:22:44
【问题描述】:
我需要测试我的应用程序是否正在从数据库中读取特殊字符并以完全相同的方式显示它们。为此,我需要使用所有可用的特殊字符填充数据库表。但是,我不确定如何在 sql 插入查询中指定特殊字符。谁能指导我一个可以在查询中插入特殊字符的示例?为简单起见,假设该表是 City 表,其中 Area 和 Avg_Temperature 为 2 列。如果我需要在 Avg_Temperature 列中插入度数(摄氏度/远海特)符号,我应该如何编写查询?
*[编辑于 2012 年 1 月 9 日下午 2:50 EST]*根据 Justin Cave 下面的建议,我做了以下分析:
表:create table city(area number, avg_temperature nvarchar2(10));
日期:insert into city values (1100, '10◦C');
Query:
select dump(avg_temperature, 1010) from city where area = 1100;
O/P
DUMP(AVG_TEMPERATURE,1010)
----------------------------------------------------------
Typ=1 Len=8 CharacterSet=AL16UTF16: 0,49,0,48,0,191,0,67
Query
select value$ from sys.props$ where name='NLS_CHARACTERSET';
O/P
VALUE$
----------------
WE8MSWIN1252
Query:
select value$ from sys.props$ where name='NLS_NCHAR_CHARACTERSET';
O/P
----------------
AL16UTF16
似乎插入确实像 Justin Cave 所建议的那样弄乱了特殊字符。但我无法理解为什么会这样?谁能提供相关建议?
【问题讨论】:
-
什么是数据库字符集?什么是国家字符集?您是否将数据加载到 VARCHAR2 列中?还是 NVARCHAR2 列?该字符是否存在于数据库字符集中?
-
@JustinCave:数据库字符集:WE8MSWIN1252;全国 CS:AL16UTF16。我会将数据加载到 NVARCHAR2 中。我不确定该字符是否存在于字符集中!我被告知要在现有数据库中构建 applcn,因此我想确保不会遇到这些问题。你能指导我在哪里可以找到上述字符集允许的字符
-
@darkie15:在使用包含人类已知的几乎所有字符的 UTF16 时,您应该不会遇到问题。真正的问题是从客户端到服务器的传输(以及所有中间步骤,如导入文件、网页、电子邮件……)
-
@darkie15 - 维基百科等有一个 Windows-1252 字符集 en.wikipedia.org/wiki/Windows-1252 的字符映射表,它将显示数据库字符集中的有效字符。
-
好的。所以我只是在包含度数符号的数据库表中添加了一行,即
INSERT INTO CITY(Area, Avg_Temparature) VALUES (1100, '10◦C');正在使用的 SQL 客户端是 Oracle SQL Developer。查看表格内容时,带有度数符号的温度列的值显示不正确。我检查了 SQL Developer 的编码,它是 UTF8。是不是输入特殊字符时数据库编码乱了?
标签: sql unicode oracle11g special-characters