String newStr = new String(oldStr.getBytes(), "UTF-8");
java中的String类是按照unicode进行编码的, 即在java处理时为unicode方式。oldStr.getBytes( String encoding)则是将java内部存在的unicode编码的String处理为encoding指定格式的byte[]字节数组,默认为由jdk查询的操作系统默认编码方式!
当使用String(byte[] bytes, String encoding)构造字符串时,encoding所指的是bytes中的数据是按照那种方式编码的,而不是最后产生的String是什么编码方式,换句话说,是让系统把bytes中的数据由encoding指定的编码方式转换成unicode编码。如果不指明,bytes的编码方式将由jdk根据操作系统默认编码方式决定。
当我们从文件中读数据时,最好使用InputStream方式,然后采用String(byte[] bytes, String encoding)指明文件的编码方式。不要使用Reader方式,因为Reader方式会自动根据jdk指明的编码方式把文件内容转换成unicode 编码。
当我们从数据库中读文本数据时,采用ResultSet.getBytes()方法取得字节数组,同样采用带编码方式的字符串构造方法即可。
ResultSet rs;
bytep[] bytes = rs.getBytes();
String str = new String(bytes, "gb2312");
不要采取下面的步骤。
ResultSet rs;
String str = rs.getString();
str = new String(str.getBytes("iso8859-1"), "gb2312");
这种编码转换方式效率底。之所以这么做的原因是,ResultSet在getString()方法执行时,默认数据库里的数据编码方式为 iso8859-1。系统会把数据依照iso8859-1的编码方式转换成unicode。使用str.getBytes("iso8859-1")把数据还原,然后利用new String(bytes, "gb2312")把数据从gb2312转换成unicode,中间多了好多步骤。
从HttpRequest中读参数时,利用reqeust.setCharacterEncoding()方法设置编码方式,读出的内容就是正确的了。
OutputStreamWriter(OutputStream, String)
用已命名的字符编码方式,创建一个 OutputStreamWriter。
将多个字符写入到一个输出流,根据指定的字符编码将多个字符转换为字节。 每个 OutputStreamWriter 合并它自己的 CharToByteConverter, 因而是从字符流到字节流的桥梁。
OutputStreamWriter 使用的编码方法可能通过名称、通过提供一个 CharToByteConverter, 或通过接受缺省的编码方式指定,它由系统属性 file.encoding 定义。
write() 方法的每次调用,将促使以给定的字符串调用编码转换器。在写入基本的输出流前,将结果字节收集在一个缓冲区中。当前缓冲区的尺寸可以指定,但是缺省时它的尺寸足以满足最终要求。 注意传递给 write() 方法的字符串不进行缓冲。为了达到更高效率,用一个 BufferedWriter 封装 OutputStreamWriter,避免频繁地调用转换程序
分享到:
相关推荐
### Java字符串编码转换详解 #### 一、Java 字符串编码转换基础 在Java中,字符串的处理是非常常见的操作之一,而字符编码是确保数据正确显示的关键因素。本篇文章将重点介绍Java中字符串编码的转换方法及其在Web...
总结起来,Java提供了多种方法来处理字符串的编码问题,包括构造String对象、转换为字节数组、读写文件以及处理URL。理解并正确使用这些方法可以避免常见的编码问题,如乱码和数据丢失。在开发过程中,始终记住指定...
以下将详细阐述Java中涉及编码转换的关键知识点。 一、概念 1. 字符: 字符是文本的基本单位,可以是字母、数字、标点符号或其他符号。在计算机内部,字符通常通过特定编码系统来表示,如ASCII、Unicode等。 2. ...
String类型的getBytes()方法可以将字符串转换为字节数组。但是,这个方法也会受到String类型的默认编码方式的影响。如果我们不指定编码方式,那么getBytes()方法将使用String类型的默认编码方式来将字符串编码为字节...
7. **第三方库**:除了使用Java标准库,还可以借助第三方库,如Apache Commons IO或Google的Guava库,它们提供了更高级别的文件操作API,可能简化编码转换的过程。 了解并熟练运用这些知识点,您就能在Java中高效地...
如果字符串由于错误的编码转换方式产生,例如ISO8859-1编码的GBK文本,可以使用`new String(text.getBytes("iso8859-1"), "gbk")`将其转换回正确的中文。 7. **JDBC中的编码转换**: JDBC驱动负责处理与数据库...
这里的 `new String(bytes, "UTF-8")` 表示创建一个新的字符串,该字符串的字符由指定的字节数组按照 UTF-8 编码转换而来。 #### 四、具体案例分析 根据题目描述中提到的内容,我们可以看到一些具体的场景应用: ...
编码类型决定了字符集,它定义了如何将字符转换为数字(字节)以及如何将数字转换回字符。常见的编码类型有ASCII、ISO-8859-1、UTF-8、GBK等。在某些场景下,我们需要确定字符串的具体编码类型,比如读取未知编码...
"encoding-filter.jar"可能是一个实现了字符编码过滤器功能的Java类库,它可以被添加到J2EE应用中,自动处理字符编码转换。而"使用方法.txt"文件则可能提供了关于如何配置和使用这个过滤器的详细步骤和示例代码,以...
- `EncodingConverter.java`:这个类最直接地与字符编码转换相关,它可能提供了从一种编码转换到另一种编码的方法。 5. **实际应用** - 在处理不同编码的文件或网络数据时,如XML、JSON或纯文本文件,可能需要...
- **String类**:Java中的String类提供了getBytes和构造函数来实现字符到字节的转换。 - **示例代码**: ```java String s = "这是一段中文字符串"; byte[] b = s.getBytes("UTF-8"); String n = new String(b, ...
当需要将字符串从一种编码转换为另一种编码时,可以使用`getBytes()`和`new String()`方法来实现。 ```java byte[] byteArray = text.getBytes("ISO-8859-1"); String convertedText = new String(byteArray, ...
Java字符编码转换是Java开发中一个重要的概念,尤其是在处理多语言环境和跨平台问题时。在Java虚拟机(JVM)启动时,它会根据操作系统的一些系统属性来确定默认的区域设置,比如`user.language`、`user.region`和`...
`new String(bytes, "UTF-8")`可以将字节数组按照指定编码转换为字符串。相反,`str.getBytes("UTF-8")`则会将字符串转换为字节数组。 4. **URL编码与解码**:在网络请求中,URL中的特殊字符需要进行编码,可以使用...
Java字符编码转换是软件开发中一个重要的主题,尤其是在处理多语言环境和跨平台操作时。本文将深入探讨Java中字符编码的转换过程及其常见问题。 首先,Java虚拟机(JVM)在启动时会根据操作系统设定一些系统属性,...
如果字符串因错误的编码转换而产生,如ISO8859-1转GBK,可以使用`text = new String(text.getBytes("iso8859-1"), "gbk")`来修正。 在JDBC操作中,字符编码的转换由各个数据库驱动实现。例如,Oracle数据库需要在...
如果字符串是由于错误的编码转换产生的,比如从GBK转换为ISO8859-1,可以通过`new String(text.getBytes("iso8859-1"), "gbk")`来纠正。 在JDBC中,字符编码转换主要由数据库驱动程序处理,具体行为取决于不同的...
在发送和接收HTTP请求时,Java的`HttpURLConnection`和`HttpServletRequest`等类会处理编码转换。若未正确设置请求头中的`Content-Type`字段,如`charset=utf-8`,可能导致中文乱码。 4. JSP编码 JSP(JavaServer ...
例如,如果数据库是UTF-8,JSP是GBK,可以使用 `new String(rs.getBytes(1),"UTF-8")` 将数据库中的UTF-8字节流转换为GBK字符串。反之,如果JSP是UTF-8,数据库是GBK,需要先将GBK字符串转换为字节流,然后再次转换...