IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> 编码 GBK 的不可映射字符 (0x80),sublime设置中文,sublime没有GBK编码选项的问题详解 -> 正文阅读

[开发工具]编码 GBK 的不可映射字符 (0x80),sublime设置中文,sublime没有GBK编码选项的问题详解

1.问题描述

在执行 javac 命令时无法编译成功,提示 错误: 编码 GBK 的不可映射字符 (0x80)

image-20221011223706000

2.问题分析

先简单的说:就是你的代码中带了中文,即使时注释里有中文也算含有。现在,我们的目的就是为了 解决能够带有中文成功编译 的问题。

这是因为我们的文件编码格式是 UTF8,而当我们使用 cmd命令行窗口 时,cmd 的编码格式为 GBK

由于编码的不同,导致 cmd 会以 GBK编码格式 去解析我们的文件,但是刚才说了,我们文件的编码格式是 UTF8,因此解析中文不成功,才报错。

但解析英文是成功的,因为英文最早来源于 unicode编码,而GBKUTF8这两种编码都是完全兼容unicode编码的。

为了验证我说的cmd编码格式为GBK,我们来看一看

image-20221011225150880

image-20221011225303428

3.问题解决

如果你已经有了sublime但没有设置中文,从 3.2节 看起;

如果你有了sublime并且设置了中文,从 3.3节 看起。

如果你的文件选项(点击左上角文件即可弹出)中有如下显示的红色框中的两个选项并设置了中文,就跳过 3.3节 ,从 3.4节 看起。

image-20221012004540582

3.1 sublime Text 3引入

你还在使用记事本编译 java 吗?其实是非常不推荐的。

这里我们推荐一款轻量级的Java编辑工具:sublime Text 3

3.1.1 介绍

一款具有代码高亮、语法提示、自动完成且反应快速的编辑器软件,不仅具有华丽的界面,还支持插件扩展机制,用她来写代码,绝对是一种享受。相比于难于上手的Vim,浮肿沉重的Eclipse,VS,即便体积轻巧迅速启动的Editplus、Notepad++,在SublimeText面前大略显失色,无疑这款性感无比的编辑器是Coding和Writing最佳的选择,没有之一。

3.1.2 特点

一款跨平台代码编辑器,在Linux、OS X和Windows下均可使用。Sublime Text 是可扩展的,并包含大量实用插件,我们可以通过安装自己领域的插件来成倍提高工作效率。Sublime Text 分别是命令行环境和图形界面环境下的最佳选择,同时使用两者会大大提高工作效率。Sublime Text 为收费软件,建议有能力的人付费使用,以支持开发者。不过不购买也可以一直使用。

3.1.3 下载与安装

3.1.3.1 🏠 下载官网: http://www.sublimetext.com/3

image-20221011225926171

3.1.3.2 找到下载的安装包位置,双击,建议修改一下安装路径,不要放在C盘。

image-20221011233024873

3.1.3.3 选择是否添加到资源管理器上下文菜单

image-20221011233200311

3.1.3.4 核实信息,准备安装

image-20221011233317525

3.2 sublime设置为中文

3.2.1 Preferences -> Package Control

image-20221011234550612

3.2.2 输入 install package

image-20221011234747233

回车后可能需要等待一会因为需要加载包,才会出现下面步骤中的面板,耐心等一会哦

3.2.3 输入 Chinese ,选择 ChineseLocalizations

image-20221011235729493

3.2.4 安装成功

显示这样的界面,可以看到已经变成中文了

image-20221011235950777

3.3 🚩 安装GBK选项插件 - ConvertToUTF8

默认情况下,我们的 Sublime Text 3 是没有 GBK编码格式设置了,为了是我们的文件设置为 GBK,应当安装 GBK选项插件。

3.3.1 下载ConvertToUTF8包

🏠 下载地址:https://github.com/seanliang/ConvertToUTF8/releases/tag/1.2.13

image-20221012001249894

3.3.2 将解压后的ConvertToUTF8文件夹迁移到sublime的Packages目录下

进入 Packages 目录:

image-20221012002413055

image-20221012002925470

拷贝到Package目录下后选要重启sublime才能看到效果。

image-20221012003047546

3.3.3 比较一下ConvertToUTF8插件安装前后sublime的变化

  • 安装前:

    image-20221012001659093

  • 安装后:

    image-20221012001921017

3.3.4 一个小 bug 的解决

你可以发现,我们出现了两次(如果你没有出现,可能需要等一下就会出现,如果你没出现就直接跳过 3.4 节),这是为什么呢?

image-20221012003605893

其实不解决也没问题,但我又强迫症哈。我们再打开 Packages 目录看下:

image-20221012003830150

因此要解决这个其实很简单了,我们直接删除 ConvertToUTF8-1.2.13 ,留下自动生成的 ConvertToUTF8 即可,删除后的效果:

image-20221012004012339

我们再来看看sublime的文件选项,就没有显示两次啦:

image-20221012004104892

3.4 🚩 创建文件,设置编码格式,编写完成后 另存为

3.4.1 创建新文件

image-20221012005131638

3.4.2 如果代码中含有中文,设置文件编码为GBK

如果代码中不带中文,则不需要进行这一步,直接创建完新文件编写代码即可。

image-20221012011535918

3.4.3 编写代码

//带了中文的代码
public class Tree
{
     public static void main(String[] args){
       Living tree=new Living ();
       tree.say();
      }
}
class Living
{
   public void say(){
       System.out.println("我是一棵树");
   }
}

3.4.3 文件 -> 另存为

image-20221012005555736

image-20221012005712007

3.5 验证 javac 可行性

在我们刚才 保存Tree.java文件 的目录下打开cmd控制台,执行 javac Tree.java。生成了两个 .class 文件则说明执行成功。

image-20221012010152523

3.6 一个小 bug 的补充

如果你下次打开 Tree.java 时发现里面的中文变成了乱码,只需要执行 文件选项 中的 Reload with Encoding 即可。

为什么会出现这种情况呢?因为你在打开文件的时候,计算机可能是以 UTF8 的格式给你解码文件的,而我们的Tree.java文件是以 GBK 方式编码。因此计算机在以 UTF8格式 解码时无法解析文件中的 GBK编码格式的中文,导致UTF8格式解析成了乱码。

所以解决这个也很简单,执行 Reload with Encoding 的 GBK 选项 即以GBK方式重新解码

image-20221012010720705

4.补充:对于为什么cmd,或者说windows采用GBK而非UTF8的理解

  • 一方面是由于历史原因,Windows支持GBK的时候UTF-8还没有普及,而微软是一家及其看重存量客户和兼容性的公司,形成了路径依赖不能轻易改变。

    UTF-8只是在存储欧洲语言文字方面有优势。由于兼容ASCII,UTF-8存储拉丁字母、数字、半角标点等字符使用1个字节,存储其他非拉丁字母的欧洲文字通常使用2个字节,但存储东亚文字,如汉字、日本假名、韩国谚文等,则使用3个字节,少数不常见的字符则用4个字节。而UTF-16对大多数常见语言文字统一使用2个字节,少数字符使用4个字节。

    因此,UTF-8在东亚地区并非最佳存储和传输方案,它的真正优势在于实现Unicode的同时兼容ASCII编码。

  • 另一方面,GBK编码的特点是 英文占1个字节,中文占两个字节。而UTF8编码的特点是 中英文统一占三个字节。而我们知道在计算机存储方面几乎绝大部分都是英文,因此存储上GBK的优势就很明显,相较于 UTF8 能够大大的节省空间。

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-10-17 12:55:18  更:2022-10-17 12:58:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 20:54:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码