Oracle 德语字符是否转换为垃圾字符?
Oracle german character are converted to junk character?
我创建了简单的 table,它只有一个字段 TCHAR
SQL> desc test;
Name Null? Type
----------------------------------------- -------- --------------
TCHAR CHAR(20)
我创建了一个 .sql 文件和 运行 来自 sqlplus
的 sql 脚本使用
@filepath..\germantest.sql
然后输出被一些垃圾词替换
输出:
SQL> select * from test;
TCHAR
--------------------
Ä
Wir bestß
Nauch à â Ý
但是当我尝试将相同的数据 运行 直接插入 sqlplus 而不是文件时
输入
insert into test values('Ärger Ökonom');
insert into test values('Ä');
insert into test values('Wir bestß');
insert into test values('Nauch à â Ý');
输出
SQL> select * from test;
TCHAR
--------------------
Ärger Ökonom
Ä
Wir bestß
Nauch à â Y
此处显示的输出是正确的。
到目前为止我尝试了什么。
- 我检查了文件格式,它必须是 utf-8
- 我查了NLS_charset是AL32UTF8
我期待什么?
- 当我 运行 来自 sql 开发人员的相同文件时,我得到了正确的输出。
我想 运行 来自 .sql 文件的相同脚本,并希望在数据库中保留原始文件中的德语字符。
您在 Windows 控制台 中的代码页必须 与 SQL*Plus 的 NLS_LANG
设置相匹配。
简而言之,您需要:
c:\> chcp 65001
c:\> SET NLS_LANG=GERMAN_GERMANY.AL32UTF8
如果您在控制台中 运行 type germantest.sql
,您可以轻松验证您的代码页是否正确。如果那不能正确显示文件内容,则说明代码页错误:
现在代码页 具有 以匹配 NLS_LANG 设置:
NLS_LANG 的正确值在 运行 运行 SQL 脚本时也很重要,因为它决定了 SQL*Plus 读取文件的编码.
当然 cmd.exe
需要配置为使用可以实际显示这些字符的字体。
我创建了简单的 table,它只有一个字段 TCHAR
SQL> desc test;
Name Null? Type
----------------------------------------- -------- --------------
TCHAR CHAR(20)
我创建了一个 .sql 文件和 运行 来自 sqlplus
的 sql 脚本使用
@filepath..\germantest.sql
然后输出被一些垃圾词替换
输出:
SQL> select * from test;
TCHAR
--------------------
Ä
Wir bestß
Nauch à â Ý
但是当我尝试将相同的数据 运行 直接插入 sqlplus 而不是文件时
输入
insert into test values('Ärger Ökonom');
insert into test values('Ä');
insert into test values('Wir bestß');
insert into test values('Nauch à â Ý');
输出
SQL> select * from test;
TCHAR
--------------------
Ärger Ökonom
Ä
Wir bestß
Nauch à â Y
此处显示的输出是正确的。
到目前为止我尝试了什么。
- 我检查了文件格式,它必须是 utf-8
- 我查了NLS_charset是AL32UTF8
我期待什么?
- 当我 运行 来自 sql 开发人员的相同文件时,我得到了正确的输出。
我想 运行 来自 .sql 文件的相同脚本,并希望在数据库中保留原始文件中的德语字符。
您在 Windows 控制台 中的代码页必须 与 SQL*Plus 的 NLS_LANG
设置相匹配。
简而言之,您需要:
c:\> chcp 65001
c:\> SET NLS_LANG=GERMAN_GERMANY.AL32UTF8
如果您在控制台中 运行 type germantest.sql
,您可以轻松验证您的代码页是否正确。如果那不能正确显示文件内容,则说明代码页错误:
现在代码页 具有 以匹配 NLS_LANG 设置:
NLS_LANG 的正确值在 运行 运行 SQL 脚本时也很重要,因为它决定了 SQL*Plus 读取文件的编码.
当然 cmd.exe
需要配置为使用可以实际显示这些字符的字体。