解决了Erlang的UTF-8转Unicode中文显示问题

最近想用Erlang新版本R14B下的wxErlang做点事情,却又遭遇Unicode困扰。没想到,很快就彻底弄清了问题的原因,找到了解决之道。

Erlang能够处理Unicode,是从版本R13A开始的。不过,经过中间7、8个版本,直到目前的R14B03,Erlang只能在werl.exe开启的shell中,把UTF-8多字节编码,解析成双字节构成的单一Unicode字符。而至少在R13A和R13B中,由erlc.exe编译非ASCII字符时,生成的UTF-8存在很大问题,甚至让人怀疑是假的。

发现这个问题,是对R13B测试的结果。据此,我写了《Erlang 中文简体字 GB2312 转 Unicode 的办法》。这两天,又发现了更为确凿的证据。

打开R13B的wxErlang例程sudoku_gui.erl,把函数create_window() 的第一行
    Frame = wxFrame:new(wx:null(), -1, "Sudoku", []),
替换成以下内容:
    Bin2 = unicode:characters_to_binary("中文窗口", utf8),
    L2 = unicode:characters_to_list(Bin2),
    gb2u:start(),
    U = gb2u:get_unicode(L2,[]),
    Frame = wxFrame:new(wx:null(), -1, U, []),
这里的L2本应是UTF-8,实际上却是GB2312。模块gb2u.erl,正是根据GB2312检索对应Unicode的。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值