解决Perl TK 中文输入,操作问题

来源:互联网 发布:汇通易贷 知乎 编辑:程序博客网 时间:2024/05/01 01:46

写一个tk测试玩意,读取用户输入,判断是否为目录。

代码如下:

 

效果如下 :

 

代码 my $str=encode("gb2312",$copied_text);  将utf8流转为中文的,进行操作(目录判断,或者输出)

 

 

 

utf8编码字串 --(作为字节流)--> perl不知道它是什么编码 ---> decode ('utf8',$foo) ---> perl知道他是utf8编码了,并将其转换为对应的unicode(两个字节)来操作(但实际存储的时候仍是utf8编码)

之所以会出现 Wide character in print at 2.pl line 19. 这样的结果,是因为perl知道你输出的变量字符串是utf8编码的多字节字符,你应该通过encode函数将该变量转换成字节流,这样perl就不会出现这个警告

综上,可以知道,perl对待外来的数据一律当作字节流处理,通过 decode 函数可以告诉 perl 当前字节流是什么编码,这时 perl 就会把他按照原来对应的编码方式内部解码为 unicode 来操作(此时这串字节流已经被perl当作是有一定意义的unicode字符串来理解了),当你要将操作完的字符串输出的时候,应该将其用encode函数按照相应的编码方式打包成字节流再输出.

原创粉丝点击