当前位置: 主页 > JAVA语言

java字符串compareto-不要将非字符数据编码为字符串在进行转换

发布时间:2023-06-09 11:17   浏览次数:次   作者:佚名

字符串是我们在学习java编程的时候使用频率非常高的一个类型了,而今天我们就通过案例分析来了解一下,java编程字符串与编码的关系。

1、char不能表示所有的Unicode

因为char是使用UTF-16来进行编码的,对于UTF-16来说,U+0000toU+D7FF和U+E000toU+FFFF,这个范围的字符,可以直接用一个char来表示。

java字符串compareto_java compareto返回值_java 重写compareto

但是对于U+010000toU+10FFFF是使用两个0xD800–0xDBFF和0xDC00–0xDFFF范围的char来表示的。

这种情况下,两个char合并起来才有意思,单独一个char是没有任何意义的。

java 重写compareto_java字符串compareto_java compareto返回值

2、注意Locale的使用

为了实现国际化支持,java引入了Locale的概念java字符串compareto,而因为有了Locale,所以会导致字符串在进行转换的过程中,产生意想不到变化。

java compareto返回值_java 重写compareto_java字符串compareto

3、文件读写中的编码格式

我们在使用InputStream和OutputStream进行文件对写的时候,因为是二进制,所以不存在编码转换的问题。

java 重写compareto_java字符串compareto_java compareto返回值

但是如果我们使用Reader和Writer来进行文件的对象,就需要考虑到文件编码的问题。

如果文件是UTF-8编码的,我们是用UTF-16来读取,肯定会出问题。

java字符串compareto_java 重写compareto_java compareto返回值

4、不要将非字符数据编码为字符串

我们经常会有这样的需求java字符串compareto,就是将二进制数据编码成为字符串String,然后存储在数据库中。

二进制是以Byte来表示的,但是从我们上面的介绍可以得知不是所有的Byte都可以表示成为字符。如果将不能表示为字符的Byte进行字符的转化,就有可能出现问题。