挖井

类库大魔王的挖井日记

挖一口属于自己的井


支持自动编码检测与转换

  大清早的,被老妈叫起,驱车去4公里外的集市吃早餐。要了一客小笼包子,一碗馄饨,说起来从上大学开始这八九年来,还真很少吃得到这样的早餐。上学的时候嫌贵了,工作了之后就一般只在公司食堂里吃,周末虽然在家,但都睡过去了。偶尔为之,真是享受啊!
  昨天突然想起,我的编辑器只能打开ANSI格式的文件,如果是Unicode,UTF-8之类的文件,打开是一片空白的,于是想改一下吧,打开时检测一下文件头部的BOM,用iconv转换一下再显示到编辑器。本来以为这将是很顺便的一件事情,从网上下载了Windows下可用的iconv库和头文件,最后却无奈地发现一个诡异的事情。原本至少ANSI格式的文件中的中文是可以正常显示出来的,如果用了iconv库,无论有没有进行编码转换,中文就全部变乱码了,而且显示乱码后,Scintilla就会报断言失败,然后整个程序就崩溃了。最后我不得不相信,这应该是iconv与wxWidgets或Scintilla配合有问题,至于到底是什么问题,我就不深究了。
  没了iconv,于是我只好转投ICU门下了。还有点比较头痛,却又让我觉得解脱的一点是,我C++程序将是用MinGW编译的,而ICU当前的4.2.0.1版本曾经尝试了很久,都只能让VC编译通过,MinGW无奈地败下阵来。这就说明,我这编码转换的功能不能通过C++实现了,也省得我再费心思去琢磨到底把这个功能放在哪里实现了。Luaforge上有个叫ICU4Lua的项目,可以在Lua中使用ICU,这个库我以前也编译过,拿出来试了试,非常简单易用,只好把读取和保存文件的功能也用Lua实现成插件了。

本文地址:

https://minidump.info/blog/2010/01/e6-94-af-e6-8c-81-e8-87-aa-e5-8a-a8-e7-bc-96-e7-a0-81-e6-a3-80-e6-b5-8b-e4-b8-8e-e8-bd-ac-e6-8d-a2/

感觉本文不错,不妨小额鼓励我一下!
上一篇

我错了,不关iconv的事

  前面提到iconv转换编码搞得wxWidgets写成的程序在Scintilla刷新时崩溃,还以为是iconv引起的问题,于是决定使用ICU。  嗯,结果我错了,用ICU仍然有问题,有相同的问题,尽管我已经把这部分代码放到Lua中执行,对嵌入的Lua解释器,调用ICU4Lua,再调用ICU,...…

CodingStudio 全文阅读
下一篇

慢工出细活

  我决定,不再盲目赶进度了!  一直以来我都处于一种奇怪的紧张赶进度的状态,每个月都想着能在当月或下月底前release一个可用的版本出来,于是为了达到这个目的,又由于实现中的各种未预期的状况出现,一项又一项的特性被我临时决定砍掉,或拖延到以后版本中实现。  所谓慢工出细活,现在我决定,不这...…

CodingStudio 全文阅读