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)
1200 Unicode
1201 Unicode (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)
65000 Unicode (UTF-7)
65001 Unicode (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 / 精选资源

浏览全部教程

面试题

学习网站

前端培训
自己甄别

前端书籍

关于朱安邦

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

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

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

关注我: Github / 知乎

于2021年离开前端领域,目前重心放在研究区块链上面了

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

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

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

于2021年离开前端领域,目前从事区块链方面工作了