求教一个关于文本编码格式的问题

colorfulcode 2013-12-10 07:59:40
有一个特定的语法格式,其中有一条label属性,该属性用来记录用户自行录入的信息,格式如下:

label = "备注内容";

为了解析这套语法,用antlr做了个文本解析工具。

当用这个工具处理ansi编码的文件时一切OK,然而当遇到非ansi编码格式的文本是却出了问题。

本以为只有非ansi编码格式的文本会有问题,后来发现有些含有特定语种的文本(例如文字为繁体中文,或者日文),即便是ansi格式依旧不能成功解析,但是,当我把这些文本中的内容copy出来,粘贴到另一个新建的ansi编码格式的文本中后,工具竟然可以正常工作了!

也想过程序运行时,将所有输入的文件内容转码并拷贝到一个临时文件中,这样就能确保它总能被程序解析,但是又觉得这样做似乎太笨了。

由于从未接触过有关编码格式的事情,望坛内高手支招

P.S: 现在我就在想,VS这种工具编辑环境,他们带怎么处理这类问题呢?
...全文
120 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2013-12-11
  • 打赏
  • 举报
回复
看看include\tchar.h的内容吧。
赵4老师 2013-12-11
  • 打赏
  • 举报
回复
对电脑而言没有乱码,只有二进制字节;对人脑才有乱码。啊 GBK:0xB0 0xA1,Unicode-16 LE:0x4A 0x55,Unicode-16 BE:0x55 0x4A,UTF-8:0xE5 0x95 0x8A
colorfulcode 2013-12-10
  • 打赏
  • 举报
回复
引用 3 楼 max_min_ 的回复:
估计你写的这个文本解析工具,应该是没有考虑编码问题的吧! 这个最好加进去考虑
是啊
max_min_ 2013-12-10
  • 打赏
  • 举报
回复
估计你写的这个文本解析工具,应该是没有考虑编码问题的吧! 这个最好加进去考虑
colorfulcode 2013-12-10
  • 打赏
  • 举报
回复
to 1楼: 你说的“直接把文本文件转为ANSI编码即可”是指在程序中生成临时文件吧??
图灵狗 2013-12-10
  • 打赏
  • 举报
回复
可能是你的文本文件是UNICODE或者UTF-8的编码,而你的工具只能解析ANSI码的缘故,这样的话其实你直接把文本文件转为ANSI编码即可,COPY出来可以也是因为编辑器本身用的是本地码。
引用 楼主 ColorfulCode 的回复:
有一个特定的语法格式,其中有一条label属性,该属性用来记录用户自行录入的信息,格式如下: label = "备注内容"; 为了解析这套语法,用antlr做了个文本解析工具。 当用这个工具处理ansi编码的文件时一切OK,然而当遇到非ansi编码格式的文本是却出了问题。 本以为只有非ansi编码格式的文本会有问题,后来发现有些含有特定语种的文本(例如文字为繁体中文,或者日文),即便是ansi格式依旧不能成功解析,但是,当我把这些文本中的内容copy出来,粘贴到另一个新建的ansi编码格式的文本中后,工具竟然可以正常工作了! 也想过程序运行时,将所有输入的文件内容转码并拷贝到一个临时文件中,这样就能确保它总能被程序解析,但是又觉得这样做似乎太笨了。 由于从未接触过有关编码格式的事情,望坛内高手支招 P.S: 现在我就在想,VS这种工具编辑环境,他们带怎么处理这类问题呢?

24,855

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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