java字符串compareto-不要将非字符数据编码为字符串在进行转换
发布时间:2023-06-09 11:17 浏览次数:次 作者:佚名
字符串是我们在学习java编程的时候使用频率非常高的一个类型了,而今天我们就通过案例分析来了解一下,java编程字符串与编码的关系。
1、char不能表示所有的Unicode
因为char是使用UTF-16来进行编码的,对于UTF-16来说,U+0000toU+D7FF和U+E000toU+FFFF,这个范围的字符,可以直接用一个char来表示。
但是对于U+010000toU+10FFFF是使用两个0xD800–0xDBFF和0xDC00–0xDFFF范围的char来表示的。
这种情况下,两个char合并起来才有意思,单独一个char是没有任何意义的。
2、注意Locale的使用
为了实现国际化支持,java引入了Locale的概念java字符串compareto,而因为有了Locale,所以会导致字符串在进行转换的过程中,产生意想不到变化。
3、文件读写中的编码格式
我们在使用InputStream和OutputStream进行文件对写的时候,因为是二进制,所以不存在编码转换的问题。
但是如果我们使用Reader和Writer来进行文件的对象,就需要考虑到文件编码的问题。
如果文件是UTF-8编码的,我们是用UTF-16来读取,肯定会出问题。
4、不要将非字符数据编码为字符串
我们经常会有这样的需求java字符串compareto,就是将二进制数据编码成为字符串String,然后存储在数据库中。
二进制是以Byte来表示的,但是从我们上面的介绍可以得知不是所有的Byte都可以表示成为字符。如果将不能表示为字符的Byte进行字符的转化,就有可能出现问题。