[20180503]珅與分隔符.txt
--//今天再次遇到分隔符問題,之前也遇到過作一次,連接.http://blog.itpub.net/267265/viewspace-763696/
--//這個"珅"仍是許多人喜歡做爲名字使用..
$ cat d1.txt
123|張飛珅test|aaa1
$ cat d1.txt | tr '|' '\n'
123
張飛?
test
aaa1
--//這樣被分割成4個字段,致使錯誤.
$ echo 珅 | xxd -c 16
-bash: syntax error near unexpected token `|'
--//由於"珅" 編碼包含字符"|",出現錯誤.要使用引號
$ echo -n "珅" | xxd -c 16
0000000: ab7c .|
--//能夠"珅"的編碼是ab7c,而7c的編碼對應的就是"|".
$ echo -n "|" | xxd -c 16
0000000: 7c |
--//這樣致使分割出現錯誤.實際上這個字符不屬於GB2312編碼表.
--//之前經過這個腳本定位:
select upper(TO_CHAR (167+rownum,'xxxxxxxxxxxxx')) "10to16",chr(167+rownum)||'|' from dual connect by level+167<=254;
--//可是僅僅對數據庫字符集AMERICAN_AMERICA.US7ASCII有效.
--//對於字符集AMERICAN_AMERICA.ZHS16GBK能夠使用以下查詢:
SELECT hex, UTL_RAW.cast_to_varchar2 (hex) hz
FROM ( SELECT TO_CHAR (167 + ROWNUM, 'FMxx') || '7c' hex
FROM DUAL
CONNECT BY LEVEL + 167 <= 254);
數據庫