[20180502]UTF8编码问题.txt

简介: [20180502]UTF8编码问题.txt --//上个星期导入执行语句时遇到的问题,做一个记录,开发的脚本使用是UTF8编码,而我们的数据库使用 --//NLS_Lang=AMERICAN_AMERICA.

[20180502]UTF8编码问题.txt

--//上个星期导入执行语句时遇到的问题,做一个记录,开发的脚本使用是UTF8编码,而我们的数据库使用
--//NLS_Lang=AMERICAN_AMERICA.ZHS16GBK,还是通过例子说明问题.

1.环境:
SCOTT@book> @ &r/ver1

PORT_STRING                    VERSION        BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

SCOTT@book> create table t as select rowid id ,'test' name from dual connect by level<=10;
Table created.

2.建立测试脚本:
--//使用putty登录,设定字符编码UTF-8.
--//登录定义环境变量如下: export LANG=en_US.UTF-8
--//建立文件.
$ cat a.txt
COMMENT ON COLUMN t.name IS '名字';

$ file a.txt
a.txt: UTF-8 Unicode text

SCOTT@book> @ a.txt
Comment created.

SCOTT@book> select * from user_col_comments where table_name='T';
TABLE_NAME COLUMN_NAME          COMMENTS
---------- -------------------- ------------------------------
T          ID
T          NAME                 名字

--//如果你在export LANG=en_US环境看到的就是乱码.
SCOTT@book> select * from user_col_comments where table_name='T';
TABLE_NAME COLUMN_NAME          COMMENTS
---------- -------------------- ------------------------------
T          ID
T          NAME                 鍚嶅瓧

3.如果你在windows下使用记事本编辑:
--//方法是打开文件编辑后选择另存为UTF-8格式.

R:\>cat a.txt
锘?


COMMENT ON COLUMN t.name IS '鍚嶅瓧';

--//可以发现开头存在一些乱字符.

SCOTT@78> @ a.txt
SP2-0042: unknown command "锘?" - rest of line ignored.
Comment created.

--//使用vim打开删除前面部分.但是前面依旧存在乱码
R:\>cat a.txt
锘縞omment on column t.name IS '鍚嶅瓧';

--//这个不要紧,一般脚本存在多行,在复制一行看看.

R:\>cat a.txt
锘縞omment on column t.name IS '鍚嶅瓧';
comment on column t.name IS '鍚嶅瓧';

SCOTT@78> column COMMENTS format a30;
SCOTT@78> select * from user_col_comments where table_name='T';
TABLE_NAME COLUMN_NAME          COMMENTS
---------- -------------------- ------------------------------
T          ID
T          NAME                 鍚嶅瓧

--//如果在UTF8下查看,可以发现显示正常.
SCOTT@book> select * from user_col_comments where table_name='T';
TABLE_NAME COLUMN_NAME          COMMENTS
---------- -------------------- ------------------------------
T          ID
T          NAME                 名字

--//实际上这个应该注意,一些开发喜欢提交的脚本是UTF8编码,不是讲这个不好,实际上使用在windows下使用vim时已经暴露一些细节,
--//出现[converted]字样.
--//而在linux下编辑就没有前面的乱码.仅仅做一个记录,不然导入一堆乱码注解,再重新整理还是浪费一些时间.
--//把在windows下编辑的文件拷贝到linux服务器,也是一样看不到前面的乱码.

# cat a.txt
comment on column t.name IS '名字';
comment on column t.name IS '名字';

# xxd -c 16 a.txt
0000000: efbb bf63 6f6d 6d65 6e74 206f 6e20 636f  ...comment on co
0000010: 6c75 6d6e 2074 2e6e 616d 6520 4953 2027  lumn t.name IS '
0000020: e590 8de5 ad97 273b 0d0a 636f 6d6d 656e  ......';..commen
0000030: 7420 6f6e 2063 6f6c 756d 6e20 742e 6e61  t on column t.na
0000040: 6d65 2049 5320 27e5 908d e5ad 9727 3b0d  me IS '......';.
0000050: 0a                                       .

目录
相关文章
|
5月前
将文字或txt转换成GBK或者UTF8编码
将文字或txt转换成GBK或者UTF8编码
410 1
用Java打印中文字符的GBK,UTF8和UTF16编码
用Java打印中文字符的GBK,UTF8和UTF16编码
561 0
用Java打印中文字符的GBK,UTF8和UTF16编码
|
编解码 JavaScript IDE
彻底解决Qt中文乱码以及汉字编码的问题(UTF-8/GBK)(二)
彻底解决Qt中文乱码以及汉字编码的问题(UTF-8/GBK)
2773 0
彻底解决Qt中文乱码以及汉字编码的问题(UTF-8/GBK)(二)
|
编解码 JavaScript Ubuntu
彻底解决Qt中文乱码以及汉字编码的问题(UTF-8/GBK)(一)
彻底解决Qt中文乱码以及汉字编码的问题(UTF-8/GBK)
3439 0
|
Web App开发 JavaScript Java
编码问题 UTF-8 & GBK
记一次奇怪的编码问题。 * Meta Element vs Response Header * Meta 的作用? * 一个细节 * 细节对编码的影响 ## Meta Element vs Response Header 一个 GBK 编码页面,使用 meta 指定页面编码和使用 response header 指定页面编码。哪个优先级比较高? ###
2399 0
|
JavaScript C# Windows
C#保存文件为无BOM的utf8格式
如图所示,发现用C#的 File.WriteAllLines 方法,无论怎么设置,最终生成的文件都是 PC utf8,也就是CRLF,用SVN进行提交的时候,显示左侧为utf8,右侧为utf8 BOM文件,甚是蛋疼。
2200 0