Programming 板


LINE

大家好 想請教一下關於中文編碼的問題 以 "複製" 兩個字來看 我利用google搜尋的網址 測試 用%BD%C6%BB%73 可以得到與 %E8%A4%87%E8%A3%BD 一樣的結果 ( https://www.google.com.tw/search? safe=off&rlz=1C1SAVA_enTW501TW501&espv=210&es_sm=93&q=%BD%C6%BB%73 )不縮網址 ( https://www.google.com.tw/search? safe=off&rlz=1C1SAVA_enTW501TW501&espv=210&es_sm=93&q=%E8%A4%87%E8%A3%BD ) 不縮網址 ========================================================== 我看了一下一個文字檔如果我用winxp 用pspad輸入 "複製" 在hex editor裡面看到的是 BDC6BB73 我嘗試以Hex editor把BDC6BB73 的部分以 E8A487E8A3BD 取代 而填入後直接打開顯示為亂碼 "銴殴ˊ" =========================================================== 另外如果在GOOGLE搜尋欄位搜尋 "%E8%A4%87%E8%A3%BD" 一樣能找到一些與 "複製" 相關的網頁 複製狗狗技術進軍英國- Yahoo奇摩新聞 真的有辦法複製人腦嗎?IBM的複製人工智慧計畫大公開 =========================================================== 由於去Browser版看好像大多都是在討論亂碼的問題 回答多屬於修改瀏覽器的設定 想請問一下在這邊的大大有沒有對這方面有涉獵的 是否有工具/網頁 OR 以程式讀BYTE做修改的方式做轉換 (寫程式應該不困難 但是不懂轉換原則) 謝謝 --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.59.147.226
1F:→ azureblaze:前面是BIG5後面是UTF-8 1.34.63.98 12/11 14:57
2F:→ azureblaze:轉換用ConvertZ 1.34.63.98 12/11 14:57
※ 編輯: donkeychen 來自: 210.59.147.226 (12/11 14:59)
3F:→ donkeychen:感謝azureblaze大大 我剛剛試了一下 210.59.147.226 12/11 15:05
4F:→ donkeychen:一個binary檔案 裡面內容只有 210.59.147.226 12/11 15:05
5F:→ donkeychen:E8A487E8A3BD 跟一個binary 裡面 210.59.147.226 12/11 15:06
6F:→ donkeychen:內容只有 BDC6BB73 都存成.txt檔 210.59.147.226 12/11 15:06
7F:→ donkeychen:用notepad下都可打開 都會顯示正常的 210.59.147.226 12/11 15:07
8F:→ donkeychen:複製 想請問一下是編輯器自己偵測的嗎 210.59.147.226 12/11 15:08
9F:推 LPH66:是的, 不過不太準確; 可參見本版 #17GlyKP2 210.69.49.38 12/11 15:38
10F:→ LPH66:不過理論上如果真是 UTF-8 那應該不會認錯 210.69.49.38 12/11 15:39
11F:→ MOONRAKER:你pspad就有編碼設定了 全部copy=>改編 118.163.12.174 12/11 15:39
12F:→ LPH66:另外打開後你也可以另存看對話框的選項 210.69.49.38 12/11 15:39
13F:→ MOONRAKER:碼=>存回去 就可觀察檔案內編碼不同 118.163.12.174 12/11 15:39
14F:→ JustinHere:http://tinyurl.com/l9s5jnb 101.10.118.26 12/11 15:41
15F:→ JustinHere:http://tinyurl.com/ojumuwn 101.10.118.26 12/11 15:43
16F:推 purpose:你到底想幹嘛?簡單的編碼轉換可以用任意 124.8.134.106 12/11 16:43
17F:→ purpose:可切換編碼的hex editor,把想轉的複製到 124.8.134.106 12/11 16:44
18F:→ purpose:剪貼簿,再選擇新的編碼->貼上,就轉換了 124.8.134.106 12/11 16:44
大大 我有一份工作上需要用到的log檔案 整份log的中文部分呈現亂碼 但是我明確的知道這個呈現亂碼的地方該是中文的"複製" 我不想直接在板上講明自己在做什麼(鬼)工作 所以把我覺得可能有問題的部分po到板上 但是如果大大真的不嫌棄 那可以到 https://dl.dropboxusercontent.com/u/57491997/CoreLog.log 下載 搜尋1111(文字)即可找到有問題的地方 這份檔案我嘗試過MOONRAKER大大的做法 會從原本的 E8A487E8A3BD 變成 E98AB4EF8BACCB8A 他把我原本呈現錯誤的字(亂碼)以utf-8的方式存起來了... ※ 編輯: donkeychen 來自: 210.59.147.226 (12/11 17:40)
19F:→ donkeychen:目前此檔案拉到chrome可以顯示為中文 210.59.147.226 12/11 17:45
20F:→ donkeychen:但是如果直接點上面的dropbox的連結 210.59.147.226 12/11 17:46
21F:→ donkeychen:以chrome開啟 還是會有亂碼 210.59.147.226 12/11 17:46
22F:→ azureblaze:那是因為dropbox告訴chrome編碼是英文 1.34.63.98 12/11 17:52
23F:→ azureblaze:沒人說(直接開)chrome會想辦法自己偵測 1.34.63.98 12/11 17:53
24F:→ donkeychen:喔喔 了解 那這樣應該chrome選utf-8是 210.59.147.226 12/11 17:55
25F:→ donkeychen:對的 我猜是PSPAD跟LPH66大大說的一樣 210.59.147.226 12/11 17:56
26F:→ donkeychen:誤判為別國語系 210.59.147.226 12/11 17:56
27F:→ MOONRAKER:這…你當然要正確的中文字去轉阿 118.163.12.174 12/11 17:57
28F:→ MOONRAKER:不知道編碼就是強開看對不對 不是轉碼 118.163.12.174 12/11 17:58
29F:→ MOONRAKER:不然硬轉當然就轉爛了 118.163.12.174 12/11 17:58
30F:→ donkeychen:大大 我的意思是我的pspad一開始就以 210.59.147.226 12/11 18:52
31F:→ donkeychen:ANSI的方式打開 如果我選utf-8 關掉 210.59.147.226 12/11 18:53
32F:→ donkeychen:檔案的時候不存 他下次打開同個檔案 就 210.59.147.226 12/11 18:53
33F:→ donkeychen:以utf-8 開啟 就會正確顯示 210.59.147.226 12/11 18:53
34F:→ donkeychen:然而 再選ANSI後 關閉檔案(不存) 210.59.147.226 12/11 18:54
35F:→ donkeychen:下次開啟又以ansi開啟 210.59.147.226 12/11 18:54
36F:→ donkeychen:pspad看起來選擇改變編碼 另存 反而是 210.59.147.226 12/11 18:55
37F:→ donkeychen:把當下顯示錯誤的東西以新的編碼方式 210.59.147.226 12/11 18:55
38F:→ donkeychen:做儲存 210.59.147.226 12/11 18:55
39F:→ donkeychen:看起來純粹是編輯器編碼設定上的問題 210.59.147.226 12/11 18:56
40F:→ donkeychen:以正確的格式打開就不需要做編碼的轉換 210.59.147.226 12/11 18:57
41F:→ donkeychen:只是PSPAD目前看起來 單純的UTF-8 210.59.147.226 12/11 18:57
42F:→ donkeychen:或者是BIG5的檔案都正確的用對應的編碼 210.59.147.226 12/11 18:58
43F:→ donkeychen:開啟 (我的第一段推文中我是用BINARY方 210.59.147.226 12/11 18:58
44F:→ donkeychen:式寫檔 讓PSPAD開啟 都會顯示正確) 210.59.147.226 12/11 18:59
45F:→ donkeychen:而這檔案開啟時有可能誤判了模式 210.59.147.226 12/11 19:00
46F:→ donkeychen:而pspad改變編碼模式又不是browser的方 210.59.147.226 12/11 19:00
47F:→ donkeychen:式 改成UTF-8 就把原本的檔案重新用utf 210.59.147.226 12/11 19:00
48F:→ donkeychen:-8的方式開啟 而是等下次開啟才是用UTF 210.59.147.226 12/11 19:01
49F:→ donkeychen:-8開 210.59.147.226 12/11 19:01
50F:→ donkeychen:回到最初的問題 感謝各位大大告知這是 210.59.147.226 12/11 19:03
51F:→ donkeychen:BIG5跟UTF-8 :) 210.59.147.226 12/11 19:03
52F:推 purpose:原來你的問題這麼單純...一開始我還在猜 124.8.136.105 12/11 19:21
53F:→ purpose:你特地提google網址,到底是要進行什麼 124.8.136.105 12/11 19:21
54F:→ purpose:網路相關的活動... 124.8.136.105 12/11 19:22
55F:→ donkeychen:喔 抱歉我沒說明 那個網址只是google搜 210.59.147.226 12/12 09:12
56F:→ donkeychen:尋 搜尋欄位填的 值 210.59.147.226 12/12 09:12
57F:→ donkeychen:>_< 因為不知道編碼系統 對於這些東西 210.59.147.226 12/12 09:14
58F:→ donkeychen:不太有概念 如果有個類似低調還原的網 210.59.147.226 12/12 09:14
59F:→ donkeychen:址 把編碼KEY進去就能知道是哪套編碼 210.59.147.226 12/12 09:15
60F:→ donkeychen:就方便多了 210.59.147.226 12/12 09:15
61F:→ donkeychen:感謝 JustinHere 大大提供的網址 我在 210.59.147.226 12/12 09:54
62F:→ donkeychen:log檔前面加入BOM EFBBBF 就不會誤判了 210.59.147.226 12/12 09:55
※ 編輯: donkeychen 來自: 210.59.147.226 (12/12 09:55) 另外想請教一個案外案 由前面的例子 "複製"兩個字的utf-8是 複=E8A487 製=E8A3BD 想請教一下 如果這個utf-8編碼有再被編成 EFBFA8 (EFBFA = E) EFBEA4 EFBE87 EFBFA8 (EFBFA = E) EFBEA3 EFBEBD 這種編碼又是哪一套編碼呢 我看了這個網址的編碼 http://www.utf8-chartable.de/unicode-utf8-table.pl?start=65280 好像不太對 U+FFE8 ef bf a8 HALFWIDTH FORMS LIGHT VERTICAL U+FFA4 ef be a4 HALFWIDTH HANGUL LETTER NIEUN .....(後面就不貼了 應該不是) ※ 編輯: donkeychen 來自: 210.59.147.226 (12/12 10:12)
63F:推 purpose:沒有 EFBFA = E 這種事,那是你猜的吧 124.8.133.120 12/12 10:41
64F:→ purpose:ef bf a8 = 垂直線符號的 UTF-8 編碼值 124.8.133.120 12/12 10:42
65F:→ donkeychen:恩 這是我猜的 因為原本的E8被編成 210.59.147.226 12/12 11:04
66F:→ donkeychen:EFBFA8 遇到EX 都會是EFBFAX 所以 210.59.147.226 12/12 11:05
67F:→ donkeychen:這樣猜測 210.59.147.226 12/12 11:05
68F:→ donkeychen:上面的 EFBFA8EFBEA4EFBE87=複 210.59.147.226 12/12 11:06
69F:→ donkeychen:EFBFA8EFBEA3EFBEBD = 製 210.59.147.226 12/12 11:06
70F:推 yvb:http://zh.wikipedia.org/wiki/UTF-8 220.136.37.75 12/12 11:07
71F:→ yvb:請先看懂 UTF-8 怎麼將 Unicode 編碼吧. 220.136.37.75 12/12 11:08
72F:推 purpose:http://goo.gl/LSlO1w 看看這篇 Joel 的文 124.8.133.120 12/12 11:59
73F:推 purpose:所謂的「U+數字」是指 code point不是任何 124.8.133.120 12/12 12:03
74F:→ purpose:一種編碼,只不過在這裡巧合的跟 E 好像 124.8.133.120 12/12 12:04
75F:→ purpose:有關聯,其實UTF-8編碼不是這樣轉換 124.8.133.120 12/12 12:04
恩 我的案外案感覺起來是 原本的utf-8編碼再度被編碼 我看了一下編碼後的結果去查 utf-8應該是無關的 所以我推測這個"不是"utf-8的編碼 至於他編碼的規則我猜測是這樣 因為我把EFBFA 改成 E EFBF 改成 NULL sed -i s/\xEF\xBE//g file sed -i s/\xEF\xBF\xA0/\xE0/g file sed -i s/\xEF\xBF\xA1/\xE1/g file sed -i s/\xEF\xBF\xA2/\xE2/g file sed -i s/\xEF\xBF\xA3/\xE3/g file sed -i s/\xEF\xBF\xA4/\xE4/g file sed -i s/\xEF\xBF\xA5/\xE5/g file sed -i s/\xEF\xBF\xA6/\xE6/g file sed -i s/\xEF\xBF\xA7/\xE7/g file sed -i s/\xEF\xBF\xA8/\xE8/g file sed -i s/\xEF\xBF\xA9/\xE9/g file sed -i s/\xEF\xBF\xAA/\xEA/g file sed -i s/\xEF\xBF\xAB/\xEB/g file sed -i s/\xEF\xBF\xAC/\xEC/g file sed -i s/\xEF\xBF\xAD/\xED/g file sed -i s/\xEF\xBF\xAE/\xEE/g file sed -i s/\xEF\xBF\xAF/\xEF/g file 是可以改回原本的utf-8的編碼 至於是什麼編碼模式我不甚清楚 所以問一下大家是否有知道 ※ 編輯: donkeychen 來自: 210.59.147.226 (12/12 12:13)
76F:推 LPH66:yvb 貼的網址點進去看吧 你的問題裡面有解答 210.69.49.38 12/12 12:31
大大不好意思 我不太知道是指哪一段 我由下面這段往回推 ================================================ 例如,希伯來語字母alepe.... 它屬於U+0080到U+07FF區域,這個表說明它使用雙位元組,110yyyyy 10zzzzzz. 十六進制的0x05D0換算成二進制就是101-1101-0000. 這11位數按順序放入"y"部分和"z"部分:11010111 10010000. 最後結果就是雙位元組,用十六進制寫起來就是0xD7 0x90,這就是這個字元aleph ================================================ 複 = E8A487 變成 EFBFA8 EFBEA4 EFBE87 EFBFA8 二進位 1110____ 10______ 10______ 1111 111111 101000 [F ] [F ][E ][8 ] EFBEA4 1110____ 10______ 10______ 1111 111110 100100 [F ] [F ][A ][4 ] EFBE87 1110____ 10______ 10______ 1111 111110 000111 [F ] [F ][8 ][7 ] 請問是這個原則嗎? 感謝 ※ 編輯: donkeychen 來自: 210.59.147.226 (12/12 14:02)
77F:→ donkeychen:purpose大大我正拜讀您提到的文章 感謝 210.59.147.226 12/12 14:10
78F:推 kingstong:0xD7 0x90這是記憶體位址吧?!十六進位 1.170.167.225 12/12 14:15
79F:→ kingstong:只有0~F啊!比如255就是FF啊!如果說錯 1.170.167.225 12/12 14:16
80F:→ kingstong:抱歉不要鞭得太嚴重 1.170.167.225 12/12 14:16
81F:→ donkeychen:是16進位的表示 但是這邊不是指記憶體 210.59.147.226 12/12 14:21
82F:→ donkeychen:位置 而是一個值 差不多是 5號 跟 5的 210.59.147.226 12/12 14:22
83F:→ donkeychen:關係 210.59.147.226 12/12 14:22
84F:推 kingstong:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F到E就 1.170.167.225 12/12 14:25
85F:→ donkeychen:請問如果有來亂我可以刪推文嗎? 210.59.147.226 12/12 14:27
86F:→ kingstong:進一位,比如十六進制中1A=11,1A是十六進 1.170.167.225 12/12 14:30
87F:→ azureblaze:不要理他就好了 1.34.63.98 12/12 14:31
88F:推 purpose:你算的過程沒錯,只是我完全無法理解為何 124.8.133.120 12/12 14:39
89F:→ purpose:要把 e8 a4 87,分別加上 FF 又學 UTF-8 124.8.133.120 12/12 14:40
90F:→ purpose:的方式編碼,目的?也許是要簡單加密吧 124.8.133.120 12/12 14:41
91F:推 kingstong:更正!1A是十進位裡的26 1.170.167.225 12/12 14:42
92F:推 kingstong:BINARY是二進位檔,是最原始的1,0構成的 1.170.167.225 12/12 14:46
93F:→ kingstong:二進位檔,是機器語言. 1.170.167.225 12/12 14:47
94F:→ donkeychen:purpose大大我不排除code有做"冗餘" or 210.59.147.226 12/12 14:50
95F:→ donkeychen:不省空間的德州佬行為畢竟是別人的code 210.59.147.226 12/12 14:51
96F:→ donkeychen:但是在各位的指導上對於編碼更有概念了 210.59.147.226 12/12 14:52
97F:推 kingstong:0F(16進制)=15(十進制) 1.170.167.225 12/12 14:55
98F:→ kingstong:10(十六進制)=16(十進制),沒到X 1.170.167.225 12/12 14:57
99F:推 kingstong:快點來鞭我或指導我,讓我也進步一下 1.170.167.225 12/12 15:11
100F:→ kingstong:當你們好心來指導後進.雖然我不懂 1.170.167.225 12/12 15:12
101F:推 kingstong:P大,0x90換算成十進制是多少?!真心發問 1.170.167.225 12/12 23:21
102F:→ kingstong:非反串.該怎麼換算?! 1.170.167.225 12/12 23:22
103F:推 purpose:http://youtu.be/29SPAmaB0mc?t=2m42s 124.8.133.120 12/13 00:19
104F:→ purpose:別算這種無聊的東西,跟我一起去八卦亂板 124.8.133.120 12/13 00:20
105F:→ azureblaze:于同學的問題應該是0x90的"x" 1.34.63.98 12/13 00:43
106F:→ azureblaze:那不是愛克斯,是乘號 因此0x90 = 0 1.34.63.98 12/13 00:43
我都俗氣的唸 叉...
107F:推 yvb:其實案外案的問題, 我認為應該應是程式的bug. 220.136.37.75 12/13 01:10
108F:→ yvb:它可能假設資料為ASCII,要轉成Unicode(UCS2), 220.136.37.75 12/13 01:11
109F:→ yvb:但又未慮 char 為 signed char, 因此 220.136.37.75 12/13 01:12
110F:→ yvb:(short)((char)0x87) 就變成了 0xff87 220.136.37.75 12/13 01:13
111F:→ yvb:此時再UCS2轉UTF8, 就變成 0xEF 0xBE 0x87 了. 220.136.37.75 12/13 01:14
112F:→ yvb:應該應是 => 應該是; 未慮 => 未考慮 220.136.37.75 12/13 01:16
113F:→ yvb:(這邊假設 char 為 8bits, short 為 16bits) 220.136.37.75 12/13 01:19
一開始不知道這也是符合utf-8 encode 以為是另一套編碼 現在看起來似乎是在string與wstring轉換時 出現這樣的問題 code如下 (有用到boost) using namespace std; using namespace boost; wstring path = L"複製"; //http://ppt.cc/yK88 string path2 = boost::to_utf8(path); //http://ppt.cc/eAm2 wstring path3; path3.assign(path2.begin(), path2.end()); //to log //http://ppt.cc/nQ7b //我猜是上面這行有問題 locale old_locale; locale utf8_locale(old_locale, new boost::program_options::detail::utf8_codecvt_facet); filesystem::wpath asPath(L"C:\\test.log"); wofstream logfile; logfile.imbue(utf8_locale); if(!logfile.is_open()) { logfile.open(asPath.external_file_string().c_str(), ios::in | ios::out | ios::app | ios::ate | ios::binary); } logfile << path3; logfile.close(); 在C:\test.log就會有精美的 EFBFA8EFBEA4EFBE87EFBFA8EFBEA3EFBEBD 了 http://ppt.cc/wEJA ※ 編輯: donkeychen 來自: 210.59.147.226 (12/13 10:12)
114F:推 kingstong:阿......謝謝賜教,不過你們到底多八卦?! 1.170.167.225 12/13 09:50
115F:→ kingstong:不要于同學的一直叫,一切都是誤會 1.170.167.225 12/13 09:52
116F:→ kingstong:是我技不如人惹到不該惹得人,拜託別傳了 1.170.167.225 12/13 09:53
117F:→ donkeychen:搜尋得到 http://goo.gl/rqAgRr 210.59.147.226 12/13 10:30
118F:推 POWERPC:原PO的問題Babel Pad完全決解,去玩玩看吧 111.241.36.113 12/13 11:28
119F:→ donkeychen:大大用Babel Pad開Big5的檔案會亂碼耶 210.59.147.226 12/13 14:49
120F:推 POWERPC:ANSI格式要在開啟時選語區才可,這不像 111.248.112.18 12/14 13:27
121F:→ POWERPC:WORD會自動辨別這程式是內定在U碼下運作的 111.248.112.18 12/14 13:29
122F:→ POWERPC:我所建立的所有CJKV字碼U-8都是用這轉成的 111.248.112.18 12/14 13:32
123F:→ POWERPC:這程式可讀別家所不可讀的UTF32文件檔 111.248.112.18 12/14 13:34
124F:→ sunneo:這不是于同學嗎?還原度可真高啊 140.127.114.38 12/14 16:05
125F:→ donkeychen:POWERPC大大 感謝:) 210.59.147.226 12/17 13:54







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:iOS站內搜尋

TOP