Erlang 的 unicode 半截子工程

下载了新版的Erlang/OTP R13B,重点试了试新增的unicode支持和wxErlang。

不象一些中文介绍说的那样乐观,我的测试结果不太好。

unicode的支持,只解决了eshell里的问题,即在erl和werl这两个工具中,已经能够正确解码,io:format已经支持多字节编码。

编译器erlc仍然不支持多字节unicode,用户程序编译后,无法简便地显示多字节unicode。

测试结果如下:

一、eshell的表现

Eshell V5.7.1  (abort with ^G)

1> unicode:characters_to_list("中文窗口").

[20013,25991,31383,21475]

2> 

2> S = unicode:characters_to_list("中文窗口").

[20013,25991,31383,21475]

3> 

3> io:format("~ts~n",[S]).

 

中文窗口

ok

4> io:write(S).

 

[20013,25991,31383,21475]ok

5> 

二、erlc编译程序的表现

先看个简单的。

%% chinese.erl

-module(chinese).-export([start/0]).

start() ->    

    Title=unicode:characters_to_list("中文窗口"),

    io:write(Title),

    io:format("~n~n~s~n~n",[Title]),

1> c(chinese).

2> chinese:start().

[214,208,206,196,180,176,191,218]

中文窗口

这里,虽然显示出了“中文窗口”四个字,但没有正确解码成多字节编码[20013,25991,31383,21475],当使用GUI界面时,中文还是显示成乱码。

三、在wxErlang中的表现

将erl5.7.1/lib/wx-0.98.1/examples/simple/hello.erl稍作改动:

create_window(Wx) ->

    Title=unicode:characters_to_list("中文窗口"),

    io:write(Title),

    io:format("~n~n~s~n~n",[Title]),

    T=[20013,25991,31383,21475],

    Frame = wxFrame:new(Wx,

          -1, % window id

          T, % window title

          [{size, {600,400}}]), 

     ……

在eshell中显示的是:

[214,208,206,196,180,176,191,218]

ÖÐÎÄ´°¿Ú

而在程序窗口的标题上,将unicode [20013,25991,31383,21475] 正确显示为“中文窗口”。

总之,在eshell中,可用unicode:characters_to_list("中文窗口"),解析成[20013,25991,31383,21475],这是GUI显示时所需要的。

但是,程序经erlc编译后,将其解析成[214,208,206,196,180,176,191,218],无法正确显示。

Erlang的程序编译器erlc需要改进,以全面支持unicode。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值