由于JDK是国际版的,在编译的时候,如果我们没有用-encoding参数指定我们的JAVA源程序的编码格式,则javac.exe首先获得我们操作系统默认采用的编码格式,也即在编译java程序时,若我们不指定源程序文件的编码格式,JDK首先获得操作系统的file.encoding参数(它保存的就是操作系统默认的编码格式,如WIN2k,它的值为GBK),然后JDK就把我们的java源程序从file.encoding编码格式转化为JAVA内部默认的UNICODE格式放入内存中。然后,javac把转换后的unicode格式的文件进行编译成.class类文件,此时.class文件是UNICODE编码的,它暂放在内存中,紧接着,JDK将此以UNICODE编码的编译后的class文件保存到我们的操作系统中形成我们见到的.class文件。对我们来说,我们最终获得的.class文件是内容以UNICODE编码格式保存的类文件,它内部包含我们源程序中的中文字符串,只不过此时它己经由file.encoding格式转化为UNICODE格式了。当我们不加设置就编译时,相当于使用了参数:javac -encoding gbk XX.java,当然就会出现不兼容的情况。
解决办法是:应该使用-encoding参数指明编码方式:javac -encoding UTF-8 XX.java
获取系统默认编码:
System.getProperty("file.encoding");
分享到:
相关推荐
这是因为Java虚拟机(JVM)会根据本地系统的编码方式来确定String类型的默认编码方式。当我们创建一个String对象时,JVM会根据本地系统的编码方式来将字符串编码为字节数组。例如,如果本地系统的编码方式是GBK,则...
例如,我们可以使用`Charset.defaultCharset()`获取系统默认的字符集。 当我们需要识别未知编码的文本文件时,可以借助第三方库,如`EncodingDetect.jar`。这个工具可能包含了各种编码识别算法,帮助我们准确地识别...
本文将详细介绍如何在Java中获取文件的编码并判断文件是否带有BOM。 首先,让我们了解一下什么是BOM。BOM是UTF-8、UTF-16和UTF-32等编码格式中的一个可选标记,用于告知解析器文件的编码类型。例如,UTF-8的BOM是三...
3. 如果以上步骤都无法确定,可以尝试使用平台默认编码或常见编码(如GBK、ISO-8859-1)读取文件,看是否能正确解码。 在`FIleCode.java`这个文件中,可能包含了实现上述过程的Java代码。通过阅读和理解这段代码,...
可以通过`System.getProperty("file.encoding")`获取当前系统默认编码。 2. String对象:String类在内部使用Unicode编码,无论其原始数据是什么编码,都会转换为Unicode存储。 三、InputStreamReader与...
在Java编程中,正确识别和处理文件的编码方式至关重要,特别是在处理不同系统间的数据交换或者解析非ASCII字符的文本文件时。本篇文章将详细介绍两种常用的方法来检测Java程序中的文件编码:一是使用`cpdetector`第...
在Java中,`java.nio.charset.Charset`类用于表示字符编码,但默认情况下,Java文件读取操作通常假设文件为UTF-8编码。对于其他编码,我们需要借助第三方库如`jcconf`或`ICU4J`来检测编码。 ```java import ...
1. Java中的字符编码:了解Java如何处理字符编码,包括默认编码(通常为UTF-8)、InputStreamReader和OutputStreamWriter的使用,以及如何通过Charset类进行编码转换。 2. 字符集GBK和Unicode:深入理解GBK和...
如果省略 `"UTF-8"` 参数,则默认使用系统的默认字符集进行转换。 **2. 字节数组到字符串的转换** ```java String newStr = new String(bytes, "UTF-8"); ``` 这里的 `new String(bytes, "UTF-8")` 表示创建一个...
在Java中,每个字符串都有一个默认的字符编码,通常是平台相关的(例如,Windows系统通常默认使用GBK,而Linux系统则可能是UTF-8)。 Java提供了`java.nio.charset`包来处理字符编码。其中,`Charset`类是核心,它...
字符编码系统如ASCII、ISO-8859-1、Unicode(包括UTF-8、UTF-16等)被广泛使用。本教程将深入探讨Java中的字符编码,以及它们在实际开发中的应用。 首先,我们需要理解什么是字符编码。字符编码是将字符与数字...
例如,“中文”在Java中默认使用Unicode编码存储为“4e2d6587”。当指定字符集为“GBK”时,该方法会将字符串编码为字节数组“d6 d0 ce c4”。 #### 四、实践案例分析 假设有一个字符串“中文”,其在Java中的...
- **错误处理**:当无法识别文件编码时,工具类应提供适当的错误处理机制,比如返回默认编码或抛出异常,以便调用者能够处理这种情况。 - **性能优化**:虽然检测文件编码有助于保证正确性,但可能会增加程序的运行...
JAVA安全编码规范参考文档深入分析了在Java开发中如何编写安全的代码,降低系统被攻击的风险。文档内容涵盖了安全编码的基本原则以及常见漏洞的安全编码方法。 一、安全编码基本原则 1. 所有输入数据都是有害的 在...
此方法默认使用平台的默认编码,通常为UTF-8,但也可以指定其他编码,如`getBytes("GBK")`。如果需要确定字符串的原始编码,需要额外的信息,因为一旦字符串被创建,其编码信息就丢失了。 3. 字符编码转换 在处理...
`getBytes()`默认使用平台的默认编码,而`getBytes(charsetName)`允许指定编码。 5. `StandardCharsets`枚举:Java 7引入了`java.nio.charset.StandardCharsets`枚举,包含了常见的字符集常量,如`StandardCharsets...
### Java字符串编码转换详解 #### 一、Java 字符串编码转换基础 在Java中,字符串的处理是非常常见的操作之一,而字符编码是确保数据正确显示的关键因素。本篇文章将重点介绍Java中字符串编码的转换方法及其在Web...
然而,需要注意的是,虽然该库的准确率相对较高,但并不能保证100%正确,因为某些文件可能没有明确的编码标识,或者包含混合编码的内容,这时可能需要结合其他策略,如使用默认编码或者用户指定编码来处理。
在JAVA源文件–>JAVAC编译–>Class–>Java运行–>getBytes()–>newString()–>显示... 文件,可以通过javac -encoding来指定,如果不指定则用系统默认编码。同时以unicode编码来生成class文件。 比如有一个java文
// 如果所有尝试都失败,返回默认编码 return DEFAULT_ENCODING; } // 实现hasBOM、getEncodingFromBOM、readFirstBytes、analyzeBytes、isValidContent等辅助方法 } ``` 这个工具类展示了如何结合多种策略来...