请教:记事本保存同样文本后大小为什么不同

huantianhuoyan 2010-04-25 06:31:11
系统:XP

实验1:
在记事本中输入一个汉字:汉
保存为unicode格式,通过右键属性查看,大小为4个字节
实验2:
在记事本中输入一个汉字:汉
保存为utf-8格式,通过右键属性查看,大小为6个字节

问题:
1、unicode为双字节编码,本身加上控制字符 汉+LF(换行)+CR(回车)=6字节, 怎么等于4个字节?
2、utf-8编码中,“汉”字占有3个字节,控制字符各占1个字节 汉+LF(换行)+CR(回车)=5字节, 怎么等于6个字节?
...全文
399 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
纠结的程序猿 2010-04-27
  • 打赏
  • 举报
回复
没有哪个工具可以明确告诉你这个文本文件是GB2312或ANSI或其它某种字符集。
用PilotEdit可以查看文件类型是ANSI, UTF-8, UTF-16或UTF-16 big endian,同时可以查看十六进制编码,PilotEdit判断得比其他文本编辑器更准确。
http://topic.csdn.net/u/20100327/22/0b5656cb-f2c7-49c5-931c-1bd639ace04d.html
huantianhuoyan 2010-04-26
  • 打赏
  • 举报
回复
晕~ 答案不同啊
控制字符是不显示出来的,如果计算大小,那么怎么算啊?
huantianhuoyan 2010-04-26
  • 打赏
  • 举报
回复
总结一下:
在记事本中输入“汉”字,并按下回车键,保存时分别选择不同的字符集格式
1、ANSI格式 大小:4字节
2、UNICODE格式 大小:8字节
3、UTF-8格式 大小:8字节

“汉”的ANSI 编码是 占位 2个字节 + \r\n 占2个字节 = 4个字节
“汉”的UNICODE编码是 “FF FE 49 6C” 占位 4个字节 + \r\n 占4个字节 = 8个字节
“汉”的UTF-8 编码是 “EF BB BF E6 B1 89 占位 6个字节 + \r\n 占2个字节 = 8个字节

非常感谢pilotedit
另外,有什么工具可以直接查看其不同字符集的编码么?我用UE好像只能看UTF16的,GB2312就看不了
纠结的程序猿 2010-04-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 huantianhuoyan 的回复:]

谢谢pilotedit!
另外,Windows在记事本中每行后面不是自动添加两个控制字符(回车+换行)么,这两个控制字符是否计入文件的大小中?
[/Quote]
记事本不会在每行后面自动添加两个控制字符(回车+换行)。除非是你手工添加。
我用记事本在一个新建的文件中输入“汉”字,然后保存,重新打开后没有回车换行符。
ccbccb 2010-04-26
  • 打赏
  • 举报
回复
是的,计入的。

[Quote=引用 2 楼 huantianhuoyan 的回复:]
谢谢pilotedit!
另外,Windows在记事本中每行后面不是自动添加两个控制字符(回车+换行)么,这两个控制字符是否计入文件的大小中?
[/Quote]
纠结的程序猿 2010-04-26
  • 打赏
  • 举报
回复
如果有回车换行符,那么回车换行符也会记入文件的大小。具体回车换行符大小由文件类型决定。

如果文件类型是UNIX + UTF16,回车换行符是\n,占用两个字节,编码是 “0A 00 ”
如果文件类型是DOS + UTF16,回车换行符是\r\n,占用四个字节,编码是 “0D 00 0A 00 ”

如果文件类型是UNIX + UTF8,回车换行符是\n,占用一个字节,编码是 “0A ”
如果文件类型是DOS + UTF8,回车换行符是\r\n,占用两个字节,编码是 “0D 0A ”
huantianhuoyan 2010-04-25
  • 打赏
  • 举报
回复
谢谢pilotedit!
另外,Windows在记事本中每行后面不是自动添加两个控制字符(回车+换行)么,这两个控制字符是否计入文件的大小中?
纠结的程序猿 2010-04-25
  • 打赏
  • 举报
回复
“汉的”unicode编码是“FF FE 49 6C”
其中“FF FE”是UTF-16的文件头(BOM)

“汉的”的UTF-8编码是“EF BB BF E6 B1 89”
其中“EF BB BF”是UTF-8的文件头(BOM)

4,170

社区成员

发帖
与我相关
我的任务
社区描述
Windows专区 一般软件使用
社区管理员
  • 一般软件使用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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