|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 输出文件内容,汉字乱码
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
2860
人关注过本帖,
1
人收藏
标题:
输出文件内容,汉字乱码
只看楼主
加入收藏
TonyDeng
等 级:
贵宾
威 望:
304
帖 子:25859
专家分:48889
注 册:2011-6-22
第
21
楼
收藏
得分:0
ansi編碼的漢字符,必須對文本從頭到尾順序掃描,一個錯位,後面全成亂碼,這就是我們常見的亂碼成因。這種編碼是舊系統的經典用法,并不好用,在那個時代過來的人都知道那很麻煩,不然編程語言也不至於發展到以多字節爲單元的字符編碼。ansi和utf8一樣是可變長度編碼,弊端是一樣的。在Windows系統中,是utf-16編碼,即固定長度的2字節編碼,好處理得多;另外還有更全面的utf-32編碼,即4字節的。
授人以渔,不授人以鱼。
2015-02-12 21:03
举报帖子
使用道具
赠送鲜花
TonyDeng
等 级:
贵宾
威 望:
304
帖 子:25859
专家分:48889
注 册:2011-6-22
第
22
楼
收藏
得分:0
在GBK編碼的系統中(當前的中文Windows系統就是這種編碼),其内碼範圍是0x8140~0xfefe,第二字節未必是大於0x80,再用以前GB2312那種靠高位是1的方法來判斷,是不行的。在樓主的問題中,數據流是倒過來掃描,先讀到第二字節,這個時候不能僅看該自己的高位是否爲1來判斷,還需要預讀下一個字節才成。哪有這麽簡單!與其把算法弄複雜,其實如前有人所言,乾脆把整個文本順序讀入(讀入的同時就把數據變成utf-16編碼的)了再倒置還來得方便。
授人以渔,不授人以鱼。
2015-02-12 21:15
举报帖子
使用道具
赠送鲜花
TonyDeng
等 级:
贵宾
威 望:
304
帖 子:25859
专家分:48889
注 册:2011-6-22
第
23
楼
收藏
得分:0
在.net基礎類庫中,有現成的編碼轉換庫函數,能把各種編碼互相轉換,這是從Windows7開始就力推的系統API,在Windows10後的大一統Windows下全是這種API,不再是Win32 API了。Win32 API雖然也有轉換函數,但很複雜,我也不能完全弄懂。當然,如果你假定GB2312就夠了,那麽也可以繼續沿用舊的方法,但那樣沒太大意義了。何況,這種倒置的需求,沒什麽實際的作用,花心思做它,似乎劃不來。
授人以渔,不授人以鱼。
2015-02-12 21:22
举报帖子
使用道具
赠送鲜花
xzlxzlxzl
来 自:湖北
等 级:
贵宾
威 望:
125
帖 子:1091
专家分:5825
注 册:2014-5-3
第
24
楼
收藏
得分:2
回复 23楼 TonyDeng
vb里都是unicode,占两个字节,asc西文字符前面加个为0的字节,这样应该怎么处理都不会出现半个汉字的问题的。不过好像txt文件里的汉字永远是用汉字内码表示的,两个字节的最高位均为1。
2015-02-12 22:24
举报帖子
使用道具
赠送鲜花
zxk112
等 级:
论坛游民
帖 子:11
专家分:26
注 册:2015-2-13
第
25
楼
收藏
得分:2
汉字好像要两个两个的倒
2015-02-14 12:04
举报帖子
使用道具
赠送鲜花
TonyDeng
等 级:
贵宾
威 望:
304
帖 子:25859
专家分:48889
注 册:2011-6-22
第
26
楼
收藏
得分:0
以下是引用
xzlxzlxzl
在2015-2-12 22:24:50的发言:
vb里都是unicode,占两个字节,asc西文字符前面加个为0的字节,这样应该怎么处理都不会出现半个汉字的问题的。不过好像txt文件里的汉字永远是用汉字内码表示的,两个字节的最高位均为1。
所有文件都是以字節爲單位儲存的,問題是程序怎麽解釋其意義而已。這正如int和char,我們把int視爲4個char,或把它視爲一個32位整數,或把它視爲2個16位整數,都是自由的。解釋不通,呈現的結果就不同,也就是所謂的“亂碼”,亂碼衹是沒按你預想的方案解釋罷了。
授人以渔,不授人以鱼。
2015-02-14 12:09
举报帖子
使用道具
赠送鲜花
26
3/3页
1
2
3
快速回复:
输出文件内容,汉字乱码
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.047052 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved