关于字符编码的基本问题

jara 2006-05-01 09:50:41
我在一个记事本里写了个字母a
然后以UTF-16存盘,然后debug这个记事本
发现是61 00,请问为什么不是00 61呢?而且汉字好像也是反过来的
是因为汇编里按相反顺序存放数据吗?
可是用其他编码如GB2312存放比如汉字‘是“,就是CA C7
是顺序存放的。为什么啊?请教高手
...全文
78 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jara 2006-05-01
  • 打赏
  • 举报
回复
结贴,刚才我存错了编码
经过试验,UTF-16也是顺序存放的!
NuclearG 2006-05-01
  • 打赏
  • 举报
回复
对刚才的bug打个补丁~~ unicode是四个字节 就是一次要读一个 dword
NuclearG 2006-05-01
  • 打赏
  • 举报
回复
这很好理解 用 ansi 写中文的话 即楼主提到的 GB2312 每个文字是被分成两个扩展ASCII来存放的 就是两个字节 而在计算机看来这两个字节在本质上没有联系 只是两个独立的字节 并不是一个完整的字 所以没有理由用小结尾方式倒过来存放 同样在读取这种东西的时候也是一个字节一个字节地取 如果取到的那个字节符号位为1 即表明它是个扩展ASCII 那就把它后面的字节也一并取了来分析 而并不是一次取一个字 那是UNICODE的作法

而用utf16的话每个文字都是占了一个字 在存放的时候当然要把两个字节倒过来了
pig4210 2006-05-01
  • 打赏
  • 举报
回复
因为我是win2000,记事本里没有UTF-16这个编码的存放方式,但我想既然如你所说它的存放顺序是相反的,那么我们可以推定它是以16个bit也就是word的形式存放数据的。而自然word在内存中的形式存放也就被照搬到磁盘上去了。
  还有就是如果以ANSI编码的话,的确是顺序存放,比如alt+97(61h)存放去“a”或alt+51911(CAC7h)输入“是”一样,在debug里都是顺序的。
  这是我的理解。

21,497

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧