Java字符转换问题 |
什么是字节流与字符流的转换? 什么时候会做转换? 字符就是char类型, 是双字节的, 用unicode, 一个char就是实际上的一个字符;字节就是byte类型, 是单字节的,实际的字符串根据编码不同,用单字节或者双字节来表示。 常用的String类型核心就是char[],String.length()就是char[]数组的大小,因此当encoding没有转换错误时,String长度是字符的个数,不管是中文还是英文。做字符处理的时候也从来不会出现截断半个字符的问题。 Java内部都是用char的,但是很多时候做输入输出就要用byte stream,例如文件、数据库、网络。 当数据要从char变为byte,或者byte变成char时,就要做转换。 同样的内容,用不同的编码方式(encoding),byte stream是不同的,转换的时候需要指定使用的encoding。 JVM的file.encoding属性确定了JVM的缺省的编码/解码方式:从而影响应用中所有字节流==>字符流的解码方式 字符流==>字节流的编码方式。在不同OS平台上,这是由locale决定的,缺省encoding在中文平台为GBK,英文平台为8859_1。 * UTF8与unicode 准确的说,UTF8不是unicode,它也只是一种编码方式,不过它的编码空间可以容纳unicode的所有字符。因此UTF8是一种很适合于存储unicode的外码。UTF8是变长编码,中文3字节。 * Java I/O Reader和Writer核心是char,InputStream和OutputStream核心是byte。 专门有bridge类做Reader/Writer与InputStream/OutputStream的转换:InputStreamReader/OutputStreamWriter。 * 什么地方会发生转换?
|
Java字符转换问题
最新推荐文章于 2024-03-10 23:35:44 发布