使用String()解决utf-8字符转GB2312的问题

简介: 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zergskj/article/details/1394206 今天写了个Jsp...
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zergskj/article/details/1394206

今天写了个Jsp提交页面遇到一个问题:

我采用的默认编码形式是utf-8

而我要提交的页面则是使用GB2321编码的

在JavaAPI中查到以下内容:

 

public (byte[] bytes,
               charsetName)
       throws UnsupportedEncodingException
构造一个新的 String,方法是使用指定的字符集解码指定的字节数组。新的 String 的长度是一个字符集函数,因此不能等于字节数组的长度。

当给定字节在给定字符集中无效的情况下,该构造方法无指定的行为。当需要进一步控制解码过程时,应使用 CharsetDecoder 类。

 

参数:
bytes - 要解码为字符的字节
charsetName - 受支持的 charset 的名称
抛出:
UnsupportedEncodingException - 如果指定字符集不受支持
从以下版本开始:
JDK1.1

 

于是想到解决办法了:

先将数据提交到我自建的一个GB2312页面上,使用上面的构造方法将utf-8的数据转换成GB2312编码,

再使用JavaScript提交数据。

新建ChangeCode.jsp:

<%@ page contentType="text/html;charset=GB2312"%>

<%

String words=new String(request.getParameter("words").getBytes("ISO8859_1"),"utf-8");

//注意:是将数据使用目标编码转换成本页编码;

%>

<script language="JavaScript">

location.href="submit.jsp?words=<%=words%>"

</script>

好了!大功告成!问题解决了。

相关文章
|
6月前
|
存储 C++ 索引
C++ string容器-字符存取讲解
C++ string容器-字符存取讲解
84 0
|
6月前
|
C++
c++:string相关的oj题(把字符串转换成整数、344.反转字符串、387. 字符串中的第一个唯一字符、917. 仅仅反转字母)
c++:string相关的oj题(把字符串转换成整数、344.反转字符串、387. 字符串中的第一个唯一字符、917. 仅仅反转字母)
78 0
|
3月前
|
存储 Java 编译器
String能存储多少个字符
String能存储多少个字符
|
3月前
|
存储 C++
【C/C++学习笔记】string 类型的输入操作符和 getline 函数分别如何处理空白字符
【C/C++学习笔记】string 类型的输入操作符和 getline 函数分别如何处理空白字符
38 0
|
6月前
|
存储 Java 编译器
String能存储多少个字符?
这篇内容讨论了Java中String的长度限制。编译时,如果字符串长度大于等于65535,编译器将报错。这是由于`CONSTANT_Utf8`常量池项的长度字段是16位无符号整数,最大值为65535。而在运行时,虽然理论上String的最大长度是2^31-1,但实际长度受限于JVM内存,最大可能占用约2GB内存,超过可能导致OutOfMemoryError。JDK9以后,对于LATIN1字符的字符串,存储优化使用byte数组,节省内存。
316 1
String能存储多少个字符?
|
6月前
|
存储 缓存 Java
|
5月前
|
Java
最大的 String 字符长度是多少?
最大的 String 字符长度是多少?
|
5月前
|
C++
【洛谷 B2025】输出字符菱形 题解(raw string literal)
使用`*`构建一个斜置的、对角线长度为5的菱形。无输入要求。输出示例:`*`、`***`、`*****`、`***`、` *`。代码实现使用C++,直接打印预定义字符串完成。
64 0
|
6月前
|
存储 Java
JAVA中String长度限制解决超出字符长度
JAVA中String长度限制解决超出字符长度
80 1
|
6月前
|
存储 编译器 Linux
标准库中的string类(中)+仅仅反转字母+字符串中的第一个唯一字符+字符串相加——“C++”“Leetcode每日一题”
标准库中的string类(中)+仅仅反转字母+字符串中的第一个唯一字符+字符串相加——“C++”“Leetcode每日一题”