[问题] 有关UTF8编码

楼主: oppositebank (咖哩兽)   2014-12-11 21:18:10
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC++
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
问题(Question):
爬了一下版上大多是转换编码
可是我的问题有点不同
我会先用A.exe读一个UTF8的txt
然后将其中三个字串作为变量 执行另一个B.exe(也就是这次想问的)
这个B.exe是想将这三个字串写入一个新的txt 并同样以UTF8编码
也就是说 我一开始读进来的字串本身就是以UTF8编码
我是以为 既然我读的就是UTF8
我只要用BOM让新建的txt是UTF8 应该就可以了
(我有看到UTF8不须BOM 但是给他BOM应该也没关系吧)
但结果部分中文可以正常显示 部分却是乱码
有点不明白为何
喂入的资料(Input):
UTF8字串:
82
宜兰
兰阳桥
预期的正确结果(Expected Output):
82
宜兰
兰阳桥
错误结果(Wrong Output):
82
宜兰
(乱码)阳(乱码)
程式码(Code):(请善用置底文网页, 记得排版)
http://codepad.org/66aQqPwJ
补充说明(Supplement):
作者: uranusjr (←這人是超級笨蛋)   2014-12-12 02:11:00
其实照 UTF8 规格是“不能”给 BOM
作者: PoorLoser (废文制造机)   2014-12-12 02:13:00
比对两份文字档的 binary code
作者: uranusjr (←這人是超級笨蛋)   2014-12-12 02:16:00
重看之后发现好像其实没有禁止 BOM... sorry (有点离题)
作者: serikafan   2014-12-12 13:19:00
你的程式码我在linux下用utf8的环境执行是正常的,不过windows的cmd环境应该没支援utf8,我想应该是字串被当成
作者: uranusjr (←這人是超級笨蛋)   2014-12-12 13:24:00
还有个可能是 CRLF 问题
作者: serikafan   2014-12-12 13:24:00
系统语系处理(big5之类的)出的问题
楼主: oppositebank (咖哩兽)   2014-12-13 10:04:00
原来是OS 感谢~

Links booklink

Contact Us: admin [ a t ] ucptt.com