perl输出中文乱码【win10】

perl输出中文乱码

运行的时候输出的内容变成了中文乱码,原因首先来查找一下自己的perl的模块里面是否有Encode-CN。请运行打开你的cmd并输入perldoc -l Encode::CN

如果出现了地址

则就是有,如果没有需要进行该模块的安装。

安装方式有很多种,我这里用的是CPAN的安装方式,且前提是我已经有perl的情况(但是没有CPAN),先下载CPAN。

只需要下载如下的两个包:

dmake:

http://mirrors.163.com/cpan/authors/id/S/SH/SHAY/`dmake-4.12.2.2.zip`

cpanm(App::cpanminus):

http://mirrors.163.com/cpan/authors/id/M/MI/MIYAGAWA/`App-cpanminus-1.7040.tar.gz`

可以选择不同的版本,时间推移版本有更新,除掉红色部分即可

  1. 将dmake-4.12.2.2.zip解压,把 startup 文件夹dmake.exe 文件放入D:\Perl\bin

  2. 解压App-cpanminus-1.7040.tar.gz 到任意目录,cmd窗口进入,输入如下命令:

    perl Makefile.PL

    dmake test

    dmake install

之后可以运行了。(选择镜像节点可以加快下载速度且稳定)

复制代码
cpanm --mirror http://mirrors.163.com/cpan Encode-CN

安装模块后,再次运行程序查看是否有乱码。如果乱码情况还存在,可能的原因就是操作系统的编码问题。

进行cmd输入chcp获得编码类型代码。活动代码页是936,936代码页对应的是gb2312(即中文),或者说是gbk。和模块中使用的不一样。只需要在代码中加入如下:

复制代码
在代码头部输入:

use utf8;

#引入utf8模块 脚本内的字符串使用utf8作为编码格式

binmode(STDOUT,":encoding(gbk)");

#标准输出使用gbk作为编码格式,也可以把gbk改为gb2312

binmode(STDIN,":encoding(gbk)");

#如果涉及到输入流,例如读文件,不加这条读中文文件会出现乱码

binmode(STDERR,":encoding(gbk)");

#如果异常错误中的字符串有中文,请加上STDERR,否则也会出现乱码

一定要注意一点,如果代码涉及到读取中文的文件,一定要加上binmode(STDIN,":encoding(gbk)");

还有一种方法,针对我们STDIN、STDOUT、STDERR(即标准输入、标准输出和标准错误)统统使用某种编码作为编码格式。

代码如下:

复制代码
use utf8;

use open ":encoding(gbk)",":std";

#标准输入、输出、错误皆用gbk编码格式进行编码
相关推荐
霸王大陆2 分钟前
《零基础学 PHP:从入门到实战》模块十:从应用到精通——掌握PHP进阶技术与现代化开发实战-1
android·开发语言·php
老华带你飞9 分钟前
旅游|基于Java旅游信息推荐系统(源码+数据库+文档)
java·开发语言·数据库·vue.js·spring boot·后端·旅游
Jane-66677716 分钟前
C语言——表达式、语句、函数
c语言·开发语言·算法
arron889917 分钟前
C# 项目源码进行全面的技术架构和调用逻辑分析。以下是系统性的技术方案
开发语言·架构·c#
88号技师26 分钟前
【2025年1区SCI】最新信号分解方法-JMD的参数优化:15种适应度函数-matlab代码
开发语言·matlab·故障诊断·信号分解
zmzb010326 分钟前
C++课后习题训练记录Day44
开发语言·c++
smile_Iris26 分钟前
Day 30 函数定义与参数
开发语言·python
老华带你飞30 分钟前
医院挂号|基于Java医院挂号管理系统(源码+数据库+文档)
java·开发语言·数据库·vue.js·spring boot
豐儀麟阁贵34 分钟前
9.6使用正则表达式
java·开发语言·数据库·mysql
kgduu35 分钟前
go ethreum之Trie
开发语言·后端·golang