`
ZacMa
  • 浏览: 37671 次
  • 来自: 深圳
社区版块
存档分类
最新评论

erlang 字符编码 <29>

 
阅读更多
用mochiweb通过网页发送中文到服务器,结果服务器显示乱码,无论打印,还是存储日志,还是再次解析出来发往客户端均是乱码,网上搜索后发现了一些问题所在:编码不一致
erlang 字符编码的文章有很多,erlang默认是用latin1,不支持中文,
如果要支持中文,需要用其他编码,unicode常用, utf8是unicode中最常用的.
eshell也要是unicode编码才可以。否则不支持中文,当然如果用linux终端,例如我用的是centos,shell用的是xshell,xshell本身的编码也要设置正确; 如果eshell设置的是latin1中文都无法输入; 见图片

这样eshell才可以正常接收和显示中文;
编码转化为unicode,使用的时候要用ts格式才可以正常显示为中文,例如io:format等;
关于ts
The Erlang compiler will interpret the code as ISO-8859-1 encoded text, which limits you to Latin characters."translation modifier" when working with Unicode texts. The modifier is "t". When applied to the "s" control character in a formatting string, it accepts all Unicode codepoints and expect binaries to be in UTF-8.

看这个例子例如
打开utf8保存的文件
  文件内容如下test.file:
[
{desc, "这是一个测试文件"},
{author, "litaocheng"}
].

其格式为erlang term,保存时选择utf8编码。
代码如下:
Erlang代码  %% read content from the file 
test1() -> 
    {ok, [Terms]} = file:consult("test.txt"), 
    Desc = proplists:get_value(desc, Terms), 
    _Author = proplists:get_value(author, Terms), 
     
    % out put the Desc and Author 
    DescUniBin = iolist_to_binary(Desc), 
    DescUniList = unicode:characters_to_list(DescUniBin), 
    io:format("desc bin : ~ts~ndesc bin : ~p~n",[DescUniBin, DescUniBin]), 
    io:format("desc list: ~ts~ndesc list: ~p~n", [DescUniList, DescUniList]).
这样就可以显示中文,


1. http://erlangdisplay.iteye.com/blog/364389
2. http://www.cnblogs.com/me-sa/archive/2012/05/31/erlang-unicode.html
  • 大小: 77.2 KB
分享到:
评论

相关推荐

    b64:erlang中base64编码的实现

    &lt; Sextet&gt;&gt;) -&gt; [ todigit ( Sextet )| encode ( Rest )]; 在上面的代码段中,一组六位从较大的二进制数据块中分离出来。 即使Rest部分不能被8整除,这也可以工作。 todigit只是将每个六位的可能映射映射到相应的...

    erlang-style-guide:Erlang 编码风格指南

    Erlang 编码风格指南理论易于维护的代码应该: 看起来它是由单个实体编写的遵循社区最佳实践和习惯用法适合测试、指标收集和其他审查/验证使查找处理系统特定问题的代码变得容易我们为其他开发人员编写代码,而不是...

    erlang_guidelines:Inaka的Erlang编码准则

    Erlang编码标准和准则 建议的阅读材料: : 目录: 荣耀干 按功能对子目录中的模块进行分组 头文件 句法 不要写意粉代码 避免动态通话 避免深层嵌套 避免如果表达式 避免嵌套尝试... 命名 命名时要保持一致 显式...

    erl-base58:一个简单的 Erlang Base58 编码器和解码器

    Base58 表示法使用的表示法几乎没有歧义字符,这使得人类更容易验证 Base58 字符串是否正确。 用法 下面的例子演示了这个模块的用法: 1 &gt; base58 : integer_to_base58 ( 16#00010966776006953D5567439E5E39F86A0...

    AjErl:用 C# 编写的类似 Erlang 的语言解释器

    学习 Erlang:编码教程 有人可以解释一下 Erlang 中 Pid 的结构吗? 并发编程 错误和过程 列表 Erlang 的重大变化 流程 “绿色线程”和 Erlang 的进程有什么区别? 特别是关于 Erlang/OTP 和多核性能 通信顺序过程...

    purestyle:个人主页

    purestyle个人主页用于跟踪播放列表的网络应用。 这些播放列表可以包含来自不同来源(YouTube,spotify等)... 查看转换: file -i (linux) file -I (macos) 变更转换: iconv -f utf-8 -t iso-8859-1 &lt; file&gt; file.new

    erlidna:在 NIF 中实现的 GNU libidn 库的简单 Erlang 绑定

    描述 erlidna库为实现的提供了一个简单的接口。... 您使用 erlidna:encode/1 使用转录将国际化域名编码为 ASCII 字符串,使用 erlidna:decode/1 解码回 UTF-8。 二郎版本 erlidna应用程序需要 Erlang R14B 或更高版本。

    erlpack:高性能Erlang术语格式打包器

    Erlpack是适用于Python和JavaScript的Erlang术语格式(版本131)的快速编码器和解码器。 JavaScript 可以打包的东西: 空值 布尔值 弦乐 原子 Unicode字符串 浮点数 整数 多头 超过64位 对象 数组 元组 ...

    ErlEditor编辑器 v1.2.0.zip

    ErlEditor是专门为国人设计的一流Erlang编程环境,它身躯小巧,性能卓越,可自定义功能完善,支持丰富的主题和脚本,同时它还完美支持各种中文编码、大字符集字符的显示,万码无忧!无论您是策划还是程序员,...

    jsbuf:JavaScript Protobuf 库

    提供一个简单JavaScript库,用于使用对消息进行编码和解码。 这深受影响,它是 Erlang 的 protobuf 生成器。 解码 传入消息应为二进制字符串。 就 JavaScript 字符串而言,我的意思是charCodeAt可访问的每个字符都...

    word源码java-920-text-editor-v2:920-text-editor-v2

    自动检测打开的文件编码,也可以转换当前文件编码 简单的工具栏,你可以快速做一个新文件,打开,保存,另存为,撤​​消/重做,以及一些常用的符号,回到上次编辑位置等。 最近打开的文件历史列表 定期搜索、替换或...

    LINGO软件的学习

    在主窗口内的标题为LINGO Model – LINGO1的窗口是LINGO的默认模型窗口,建立的模型都都要在该窗口内编码实现。下面举两个例子。 例1.1 如何在LINGO中求解如下的LP问题: 在模型窗口中输入如下代码: min=2*x1+3*...

Global site tag (gtag.js) - Google Analytics