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灯, 水草

请输入看板名称,例如:Boy-Girl站内搜寻

TOP