2019独角兽企业重金招聘Python工程师标准>>>

用perl写文本处理程序,或者写服务器端脚本的时候,常常会遇到“Wide character in print” 的<p>警告或者错误。<p> 这是因为在程序中处理中文等宽字符时,perl不能识别要处理的内容。<p> 首先要知道perl只能处理两种编码:ascii码和utf-8。ascii码是很少的,像中文、日文、韩文等字符<p>要想能被perl处理,只能用 utf-8编码方式。字符串在perl内部的存储格式如下图:<p>

当flag是1的时候,perl就会把那个字符串当做utf-8编码的字符来处理;如果是0,perl就不能认知字<p>符串中除了 ascii码之外的字符,这个时候,就会报出“Wide character in print”的警告或者<p>错误。<p> 举个例子,你要程序中处理‘当历史成为历史’这个字符串,如果你的程序文件是utf-8编码的话,<p>一般情况下直接处理就行了,因为这 时字符串的utf8-flag是打开的。如果你的程序文件是<p>gb2312的话,那么你就需要把那个字符串的utf8-flag打开。但是,一般还会有这样 的问题,<p>因为这个字符串是gb2312编码的,所以你要做两件事情:将字符串的编码转为utf-8和打开<p>utf8-flag。<p> use Encode;<p> use strict;<p> my $str = "当历史成为历史";<p> Encode::_utf8_on($str);<p> print $str. "\n";<p> Encode::_utf8_off($str);<p> print $str. "\n";<p> 将上面的这段程序存到文件里,试图运行的时候就会报错:Wide character in print at test.pl line <p>6。这就是因为utf8-flag被关闭,perl不能识别字符串。<p> 当然,在每个处理宽字符的地方加上Encode::_utf8_on函数确实是个解决办法。但是一般来说,在<p>每个地方都加上这样的函 数,既在编写程序的时候麻烦,维护的时候更麻烦。<p> 这里还有一个更好的办法:在程序文件的头部加上以下内容<p> use utf8;<p> binmode(STDIN, ':encoding(utf8)');<p> binmode(STDOUT, ':encoding(utf8)');<p> binmode(STDERR, ':encoding(utf8)');<p>

转载于:https://my.oschina.net/pkjason/blog/125079

[perl]Wide character in print报错相关推荐

  1. dbd/oracle,linux centos环境下,perl使用DBD::Oracle遇到报错Can't locate DBDOracle.pm in @INC 的解决办法...

    报错 install_driver(Oracle) failed: Can't locate DBD/Oracle.pm in @INC (@INC contains:/home/as_user/PM ...

  2. Unescaped or nonterminated character/entity reference 报错-IDEA

    报错描述 提示不允许在characterEncoding=utf-8&userSSL=true中使用"&"号 报错原因 IDEA将"&" ...

  3. 【 Perl 】三种方式解决” Wide character in print “

    1.binmode STDOUT, ":utf8"; 因为程序本身是用utf8编码的(可以用use utf;明示给Perl).这句话就是告诉Perl输出是utf8编码的. 2.us ...

  4. Python“Non-ASCII character in file”报错问题

    [root@centos7 python]# python utf8.py SyntaxError: Non-ASCII character '\xe4' in file utf8.py on lin ...

  5. Wide character in print at ../lib/MonWalkProc.pm line 569.

    use utf8::all; 当然,我们需要先安装这个模块utf8::all. 一劳永逸,所有涉及字符集编码的地方,此模版都会帮你设置为utf8: 需要安装perl包如下: Import-Into-1 ...

  6. perl 用网易发邮件报错 554 DT:SPM 163 smtp14

    查看相关链接,貌似被当成垃圾邮件了,发不出去 554 DT:SPM 163 smtp14,EsCowACHUegmKpdc3giRMQ--.29617S2 1553410599,please see ...

  7. rdd.foreach(print)报错SyntaxError: invalid syntax

    问题 解决方法 from __future__ import print_function 如图:

  8. python报错 SyntaxError: invalid character in identifier

    从网上复制的python代码,不修改,往往会报错:SyntaxError: invalid character in identifier 报错的原因通常是以下两种: 有中文状态下的括号(解决方法:修 ...

  9. 执行perl xttdriver.pl报错Can't locate Getopt/Long.pm in @INC

    环境:AIX 6.1 + Oracle 10.2.0.4 现象:在做xtts测试时,源环境使用Oracle自带的perl执行xttdriver.pl报错如下: $ $ORACLE_HOME/perl/ ...

最新文章

  1. 英伟达发布RTX 2000系列显卡,“实时光线追踪”究竟能为游戏带来什么?
  2. 剑桥大学发布2019年度AI发展报告,预测未来12个月AI产业6件大事
  3. python编程与特征提取_Python进行特征提取的示例代码
  4. 世界上最牛的网络设备,价格低廉,其貌不扬......
  5. list排序(Collections.sort())
  6. 基于java 企业进销存管理系统设计(含源文件)
  7. 7-161 梅森数 (20 分)
  8. MPLS ××× Carrier Supporting Carrier Option AB(一)
  9. Android内存优化12 内存泄漏常见情况3 注册泄漏
  10. 计算机设备运输规范,《电子计算机机房设计规范》GB50174-93
  11. python培训 马哥python班
  12. 南京大学软件学院考研计算机网络汇总
  13. 无盘php,MZD无盘系统160台网吧安装实战教程
  14. 网站域名被封锁、被屏蔽、被和谐后该如何处理
  15. pycharm报错: with exit code -1073740791 (0xC0000409)
  16. 数据防泄漏 | 禁止PrintScreen键
  17. NYOJ-506 洗澡
  18. 2022年度湖北省科技创新人才及服务专项软科学研究项目申报条件、流程和项目类别
  19. 子网划分和计算方法(附习题详解)
  20. 程序员中年危机的真正原因是不懂营销

热门文章

  1. L - JavaScript继承
  2. IBM服务器raid5崩溃数据恢复方案及过程
  3. Archlinux里面安装VMware Tools
  4. Sql — CTE公用表表达式和With用法总结
  5. [Object-C语言随笔之二] 《NSLog》常用的打印调试语句与自动排版
  6. 用T-SQL得到数据库的可视化结构
  7. Windows 7 开发系列汇总
  8. linux ln(link) 命令详解
  9. 信息化道路上,这两家龙头企业做了什么
  10. 查找表包含的页和页所在的表