Java中的ASCII转UTF-8转换

3
我有一个问题,我使用CSV文件格式上传数据,并由Java类读取,然后将其存储在数据库中。到目前为止没有问题,但当我从数据库中读取数据时,数据包含一些特殊字符。
所以请您帮助我解决这个问题。
提前感谢。

4
"请问你能帮我吗?" 请问你能找到键盘上的Shift键吗?使用它来大写每个句子的开头和单词“I”的首字母。这有助于那些试图帮助你的读者,您不想让他们帮助起来更困难,不是吗? - Andrew Thompson
2个回答

4

ASCII-7 兼容 UTF-8。你不需要做任何事情就可以将 ASCII-7 转换成 UTF-8(但反过来不行)。


你可以将ASCII-7格式作为UTF-8格式读取。当你在读取文件时只能指定一种编码方式,因此当你指定“UTF-8”时,它仅是“UTF-8”。但它仍然可以正确读取以其他格式编写的文件。(取决于所使用的格式和字符) - Peter Lawrey
我们在设置UTF8格式时遇到了一些字符问题,例如法语和中文字符,但使用ISO8859_1格式可以正常工作。请问我们该如何解决这个问题? - san
这很奇怪,因为http://en.wikipedia.org/wiki/ISO/IEC_8859-1是“8位单字节编码的图形字符集 - 第1部分:拉丁字母表第1部分”,是ISO/IEC 8859系列ASCII标准字符编码的一部分,第一版于1987年出版。它通常被称为Latin-1。它一般用于“西欧”语言。UTF-8支持更高的字符,如中文。 - Peter Lawrey

0

这是一篇你真的应该阅读的文章。

关于Unicode和字符集,每个软件开发人员绝对必须知道的最低限度(没有任何借口!)

接下来,回答你的问题:

  • 要读取使用UTF-8编码的文件,需要使用BufferedReader

    BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));
    
  • 要写入使用UTF-8编码的文件,需要使用BufferedWriter

    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF-8"));
    

确保通过套接字传输的数据正确无误。


1
不会编译。问题在于InputStreamReaderOutputStreamWriter这里是一个更加针对Java(EE)的文章。有关文本文件问题,请参考此处 - BalusC
@BalusC:确实!我总是在没有IDE的情况下混淆它们。 - Martijn Courteaux

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接