[20180502]UTF8編碼問題.txt
[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 .
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2153632/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20180502]ORA-01580.txt
- [20231013]CLOB型別的編碼問題.txt型別
- 【arcmap】 utf8編碼
- [20210107]編寫bash shell指令碼遇到的問題.txt指令碼
- [20180502]PLDEVELOP與儲存過程除錯.txtdev儲存過程除錯
- [20211229]sql語句包含中文儲存clob的編碼問題.txtSQL
- 字元編碼問題字元
- py編碼問題
- 漢字編碼問題
- python批次將檔案編碼格式轉換為 UTF8帶標籤的格式,解決linux環境下中文編碼亂碼的問題PythonLinux
- 用Javascript實現UTF8編碼轉換成gb2312編碼JavaScript
- [20200225]alert檔案亂碼問題.txt
- 遇到的編碼問題、時區問題整理
- C++windows編碼問題C++Windows
- MySQL 中字元編碼問題MySql字元
- 字元編碼問題記錄字元
- [20220414]toad呼叫執行指令碼問題.txt指令碼
- 新手請教,LARAVEL兩個資料庫不同編碼的問題,utf8與gbk怎麼相容顯示中文?Laravel資料庫
- Gradle 編譯警告亂碼問題Gradle編譯
- PHP 與 JS 的編碼問題PHPJS
- 記住,永遠不要在 MySQL 中使用 “utf8” 編碼MySql
- JS、C#中URL編碼解碼問題JSC#
- TOMCAT 請求資料編碼亂碼 問題Tomcat
- 少編碼多思考:程式碼越多 問題越多
- 解決 requests 庫 URL 編碼問題
- 徹底解決Python編碼問題Python
- webstorm 無法編輯程式碼問題WebORM
- scheme跳轉特殊字元編碼問題Scheme字元
- Ubuntu中 MySQL 的中文編碼問題UbuntuMySql
- [20231101]使用tpt seg2.sql指令碼問題.txtSQL指令碼
- [20231102]除錯bash shell指令碼遇到的問題.txt除錯指令碼
- [20221126]tpt pr.sql指令碼執行問題.txtSQL指令碼
- [20220102]使用ashtop與dashtop指令碼的小問題.txt指令碼
- [20210812]windows xcopy問題.txtWindows
- [20190221]sql patch 問題.txtSQL
- [20181217]strace使用問題.txt
- [20181204]bbed修改問題.txt
- [20190313]備份問題.txt