Java文字コード

大家都不喜欢字符编码吧。我记得有人说Java8已经将UTF-8设为默认值,虽然这已经晚了,但我希望能写一个Java中使用字符编码的示例。

在什么情况下需要注意字符编码

首先,需要考虑字符编码的情况是什么时候呢?
这发生在我们的Java应用程序之外有输入或输出的时候。

输入示例

在服务器客户端系统中,从客户端输入的数据读取外部文件,如CSV等。

产出的例子

从服务器返回的服务器客户端系统
文件导出
数据库注册

使用文字编码进行处理

我认为还有很多其他的,但我想介绍一些我经常使用的。

字符串.取字节

这是一个以字节形式获取字符串的函数。

"TEST".getBytes(StandardCharsets.UTF_8);

按照如下的方式,在getBytes函数的参数中指定字符编码。这样就可以将字符串“TEST”解释为UTF-8,并将其转换为字节形式。

getBytes函数也可以不指定任何参数。在这种情况下,会使用执行环境中的默认字符编码。

如果想要确认该值,可以执行以下代码来确认。

System.out.println(System.getProperty("file.encoding"));

如果你想改变默认的字符编码,请在运行时指定以下选项。

-Dfile.encoding=〇〇

String的构造函数

在Java中,使用String类的构造函数可以接受一个byte数组和字符编码,从而可以获取指定字符编码的字符串。

byte[] byte1 = "TEST".getBytes(StandardCharsets.UTF_8);
String encorded = new String(byte1, "MS932");

如果没有指定字符编码,则该构造函数将使用执行环境中的默认字符编码。

读取文件

有很多方法可以读取文件,但我只选择一种方法来提取。

try {
    BufferedReader bufferedReader = Files.newBufferedReader(Paths.get(""), StandardCharsets.UTF_8);
} catch (IOException e) {
    // TODO 自動生成された catch ブロック
    e.printStackTrace();
}

使用Files.newBufferedReader函数指定要读取的文件,并在第二个参数中指定字符编码。
可以省略字符编码的指定,此时将默认为UTF-8,在任何环境下都适用。(据说是从Java8开始)
就像这样。

public static BufferedReader newBufferedReader(Path path) throws IOException {
    return newBufferedReader(path, StandardCharsets.UTF_8);
}

最后

那么,我想今天就到这里结束吧。
Files.newBufferedReader默认是UTF-8的,而getBytes和String的构造方法则根据环境而有不同的默认值。
请注意不同的函数使用不同的默认值。
嗯,我认为无论何时都应该指定字符编码。。

广告
将在 10 秒后关闭
bannerAds