+ -
当前位置:首页 → 问答吧 → perl 用什么命令来查询perl使用的编码

perl 用什么命令来查询perl使用的编码

时间:2010-09-26

来源:互联网

用什么命令来查询perl使用的是什么编码?
谢谢了 先

作者: sunguangshou   发布时间: 2010-09-26

本帖最后由 珞水的大叔 于 2010-09-26 13:58 编辑

写入文件有两个要素,一是字符,二是编码,字符会通过编码方式被编为一个字节一个字节的数据。
所以说,一个文件的编码方式,在它被写入时就已经是确定的了。
文件存放的是数据,数据用编码去解释为字符。
数据、编码、字符的关系为:
下载 (4.48 KB)
2010-09-26 12:54

perl读入一个文件的时候,读入的是数据,与文件的编码无关,
只有当你需要解释数据为字符时,比如print的时候,才会调用环境变量中设置的编码来解释数据,然后就看到屏幕上显示的字符了。
这里也可以看出如果环境变量中的编码与写入文件使用的编码不同的话,屏幕上就会显示乱码。
当然,如果在程序中使用了与编码相关的模块的话,解释的时候就可以自己设定用哪种编码来解释数据。

综上所述,查询perl使用编码的状况需要:
    先看perl所在系统的环境变量(linux:echo $NLS_LANG,windows:不太清楚,可以请达人help)
    然后看程序中是否有设定。

仅本人观点,请达人指正。

作者: 珞水的大叔   发布时间: 2010-09-26

回复 珞水的大叔


    仅凭数据编码字符,我就认为你是一个很认真的人。

但是,跟我想要得答案(也不知道,我想要得是否正确)有点点出入。

谢谢了

作者: sunguangshou   发布时间: 2010-09-26

在Perl看来, 字符串只有两种形式. 一种是octets, 即8位序列, 也就是我们通常说的字节数组. 另一种utf8编码的字符串, perl管它叫string. 也就是说: Perl只认识两种编码: Ascii(octets)和utf8(string).

作者: toniz   发布时间: 2010-09-26

回复 toniz


Perl只认识两种编码: Ascii(octets)和utf8(string)
上面这种说法,有没有具体的资料呀?
可否提供一下。
谢谢 先

作者: sunguangshou   发布时间: 2010-09-26

http://bbs.chinaunix.net/thread-1791483-1-1.html

还有一篇旧贴,翻不到了

作者: toniz   发布时间: 2010-09-26



QUOTE:
还有一篇旧贴,翻不到了
toniz 发表于 2010-09-26 15:57




慢慢找,找到后贴上来就行了。
谢谢了 先

作者: sunguangshou   发布时间: 2010-09-26