notepad++编java显示不出中文,编码GBK的不可映射字符

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了notepad++编java显示不出中文,编码GBK的不可映射字符相关的知识,希望对你有一定的参考价值。

用netbeans出现了同样的问题

  错误原因:

  由于JDK是国际版的,在编译的时候,如果没有用-encoding参数指定JAVA源程序的编码格式,则javac.exe首先获得操作系统默认采用的编码格式,也即在编译java程序时,若不指定源程序文件的编码格式,JDK首先获得操作系统的file.encoding参数(它保存的就是操作系统默认的编码格式,如WIN2k,它的值为GBK),然后JDK就把我们的java源程序从file.encoding编码格式转化为JAVA内部默认的UNICODE格式放入内存中。

  解决方案:

  1.英文版notepad++

  菜单:Configure --> Options --> JDK Tools --> Compiler

  2.中文版 notepad++

  菜单:设置→首选项→新建,选择编码方式为ANSI.

参考技术A notepad++的菜单栏里面选择格式里面,选择UTF-8无dom编码方式,保存后重新编译再试试追问

本来就是UTF-8无dom编码方式,而且我用netbeans也出现了同样的问题

参考技术B 根据你这个现象,应该用ANSI编码。

另外,那个是BOM,不是dom。本回答被提问者采纳

java编码与解码

 

转:https://blog.csdn.net/heyanxi0101/article/details/80356870

java编码与解码(一)

编码表概述和常见的编码表

概述:有字符及其对应的数值组成的一张表

常见的编码表

ASCII:美国标准信息交换表
ISO8859-1:拉丁码表,欧洲码表
GB2312:中国的中文编码表
GBK:中国的中文编码表升级
GB18030:GBK的取代版本
BIG5:通用于香港、台湾地区的繁体字编码方案
UTF-8:最多用3个子节表示一个字符
Unicode:国际标准码,融合了多种文字,所有的文字都用两个子节来表示,Java语言使用的就是该码表


    编码过程:把看得懂的变成看不懂的
    解码过程:把看不懂的变成看得懂的

在我们Java中定义了一个String,其编码方式是啥?

    字符串实际上就是一个char数组。那么Char的编码,其实就是字符串的编码。那么Char是什么编码呢?Java中的String默认使用的是Unicode编码。
    Unicode是一中编码,所谓的编码就是一个编号到字符的一种映射关系,就仅仅是一对一的映射关系而已。

编码和编码格式的区别是什么?

    1.Unicode 是一种编码,所谓的编码就是一个编号(数字)到字符的一种映射关系,就仅仅是一种一对一的映射关系而已。
    2. GBK、UTF-8是一种编码格式,是用来序列化或存储上述的(编号或者数字)的一种“格式”.

    编码和编码格式:*java的String使用的编码的Unicode,当String存在于内存中的时候,是“只有编码没有编码格式的”,所以java程序中的任何String对象,说它是GBK或者UTF-8都是错的。String在内存中是不存在编码格式*的,它只是一个Unicode的一个字符而已。
    当字符串需要在网络中传输或者要被写入文件的是时候,就需要编码格式了。乱码的问题也因此出现了。

    GBK 和 UTF-8:GBK 和 UTF-8 都是用来序列化或存储 Unicode 编码的数据的,但是分别是2中不同的格式,他们都是 Unicode 的实现方式。

    ASCII码 和 Unicode:ASCII 和 Unicode一样也是一种编码,只不过这两种编码能编码的范围不同,Unicode 能编码的范围要更大一些,几乎能覆盖现存的所有字符。

Java中一些编解码的常见使用

    1.流读取文件,具有转换编码功能的有:OutputStreamWriter 和 InputStreamReader
构造器如下:

// 创建指定字符集的 InputStreamReader
InputStreamReader(InputStream in, String CharsetName)
// 创建使用指定字符集的 OutputStreamWriter
OutputStreamWriter(OutputStream out, String CharsetName)


    2.处理字符串编码问题

//a. 重新对获取的字符串进行编码
Byte[] bytes = str.getBytes(String encodeCharName);

//b. 重新对bytes进行编码,创建新的字符串对象
str = new String(Byte[] bytes, String decodeCharsetName);

// 一般结合使用
str = new String(str.getBytes(String encodeName), String decodeCharsetName);


    3.处理请求参数传递编码问题

        java中编码:URLEncoder.encode(strUri, “UTF-8”);
        java中解码:URLDecoder.decode(strUri, “UTF-8”);

 

























以上是关于notepad++编java显示不出中文,编码GBK的不可映射字符的主要内容,如果未能解决你的问题,请参考以下文章

java编码与解码

怎么查询汉字的GB2312字符代码

java 编码类型

补充:字符编码ASCII ISO8859-1GB2312GBKUnicodeUTF-8

Java:文件转换流(解决编码问题,防止出现乱码)

Java:文件转换流(解决编码问题,防止出现乱码)