Deno 在 Windows 上中文乱码的问题解决

🌙
手机阅读
本文目录结构

前言

通过我在不同平台的使用和真实测试,我非常推荐你使用 Linux 和 Mac 来搞;

如果你是 Windows 机器,推荐使用 Git Bash 或者 微软新出的 Windows Terminal

这里的核心就是 “win10 中 cmd,power shell 设置默认编码为 UTF-8(解决 win10 命令行中文乱码)”

读取本地文件乱码

deno run --allow-read https://deno.land/std/examples/cat.ts E:\deno\axihe.com.md

https://a.axihe.com/edu/deno/powershell_u53NMmH2mT.png

再试试英文的,发现英文状态可以的;

https://a.axihe.com/edu/deno/powershell_Y0jWfO7VwS.png

最开始遇到这个问题,我是有点懵逼。

根据我的经验,这是因为 powershell 和 cmd 的解析问题,不是 Deno 的锅,事实证明就是这样;如果你是使用 Git Bash 或者 微软新出的 Windows Terminal 就不会存在这个问题。

我们来设置一下 powershell 格式

修改 powershell/cmd 格式

临时修改

直接在 powershell 中执行 chcp 命令

chcp 65001

运行试试,发现可以运行,这只是当前窗口好用。

https://a.axihe.com/edu/deno/powershell_BM0BJHJHlF.png

cmd 的设置

注意:这个方法我网上找到的,但是测试没有生效,留个 TODO,以后填坑

如果想每次打开 cmd 时让电脑自动输入这串代码,可以下面这么做:

  1. win+R
  2. regedit
  3. 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
  4. 鼠标右键- 添加一个字符串值 (名称为:autorun 数据为:chcp 65001

https://a.axihe.com/edu/deno/regedit_QrESZ0D8nB.png

chcp 命令使用的数字编码表

代码页国家(地区)或语言
437美国
708阿拉伯文 (ASMO 708)
720阿拉伯文 (DOS)
850多语言(拉丁文 I)
852中欧 (DOS) - 斯拉夫语(拉丁文 II)
855西里尔文(俄语)
857土耳其语
860葡萄牙语
861冰岛语
862希伯来文 (DOS)
863加拿大 - 法语
865日耳曼语
866俄语 - 西里尔文 (DOS)
869现代希腊语
874泰文 (Windows)
932日文 (Shift-JIS)
936中国 - 简体中文 (GB2312)
949韩文
950繁体中文 (Big5)
1200Unicode
1201Unicode (Big-Endian)
1250中欧 (Windows)
1251西里尔文 (Windows)
1252西欧 (Windows)
1253希腊文 (Windows)
1254土耳其文 (Windows)
1255希伯来文 (Windows)
1256阿拉伯文 (Windows)
1257波罗的海文 (Windows)
1258越南文 (Windows)
20866西里尔文 (KOI8-R)
21866西里尔文 (KOI8-U)
28592中欧 (ISO)
28593拉丁文 3 (ISO)
28594波罗的海文 (ISO)
28595西里尔文 (ISO)
28596阿拉伯文 (ISO)
28597希腊文 (ISO)
28598希伯来文 (ISO-Visual)
38598希伯来文 (ISO-Logical)
50000用户定义的
50001自动选择
50220日文 (JIS)
50221日文 (JIS- 允许一个字节的片假名)
50222日文 (JIS- 允许一个字节的片假名 - SO/SI)
50225韩文 (ISO)
50932日文(自动选择)
50949韩文(自动选择)
51932日文 (EUC)
51949韩文 (EUC)
52936简体中文 (HZ)
65000Unicode (UTF-7)
65001Unicode (UTF-8)

永久修改

  • 找到 powershell Profile,可以在 powershell 环境中输入 $Profile 就可以得到 Profile 文件的路径
    • 我的机器是C:\Users\Administrator\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 https://a.axihe.com/edu/deno/powershell_QH0sq0ZLBq.png
  • 但是我发现 PROFILE 默认文件不存在,需要创建:

    New-Item $PROFILE -ItemType File -Force
    

https://a.axihe.com/edu/deno/powershell_hGM0qiBY15.png https://a.axihe.com/edu/deno/explorer_D5JbfBk5Nv.png

  • 此时会在文档目录下产生一个 ps1 文件,该文件会在 Powershell 启动的时候加载。
  • 其次,在该配置文件中添加如下内容:[System.Console]::OutputEncoding=[System.Text.Encoding]::GetEncoding(65001)
  • 在管理员模式下运行 powershell, 执行该命令命令:Set-ExecutionPolicy Unrestricted

https://a.axihe.com/edu/deno/powershell_CNDP7Mhwy8.png

  • 新打开一个 powershell 会话,测试一下中文是否异常,成功啦!

https://a.axihe.com/edu/deno/powershell_gQ2yajesja.png

axihe
axihe

AXIHE / 精选教程

浏览全部教程

HTML

CSS

JS

关于朱安邦

我叫 朱安邦,阿西河的站长,在杭州。

以前是一名平面设计师,后来开始接接触前端开发,主要研究前端技术中的JS方向。

业余时间我喜欢分享和交流自己的技术,欢迎大家关注我的 Bilibili 和抖音。

关注我: Github / 知乎

如果你加我的私人微信,麻烦写上您的 称呼,所在地区,职业,方便我备注,谢谢


本站的微信公众号

阿西河前端教程

Anbang

安邦的私人微信

微信号: yaolushan

Anbang

Bilibili(B站)

朱安邦

Anbang

我叫朱安邦,阿西河的站长

目前在杭州从事区块链周边的开发工作,机械专业,以前从事平面设计工作。

2014年底脱产在老家自学6个月的前端技术,自学期间几乎从未出过家门,最终找到了满意的前端工作。更多>

axihe
axihe
新版红宝书,最低44元! axihe 京东购买 / 天猫购买 / 图灵购买