String的getBytes方法和String(byte[] bytes,Charset charset)组合使用解决jsp传递中文参数乱码的情况
public byte[] getBytes(Charset charset)
使用给定的 charset 将此 String 编码到 byte 序列,并将结果存储到新的 byte 数组。
此方法总是使用此字符集的默认替代 byte 数组替代错误输入和不可映射字符序列。如果需要对编码过程进行更多控制,则应该使用 CharsetEncoder 类。
参数:
charset - 用于编码 String 的 Charset
返回:
所得 byte 数组
public String(byte[] bytes,Charset charset)
通过使用指定的 charset 解码指定的 byte 数组,构造一个新的 String。新 String 的长度是字符集的函数,因此可能不等于 byte 数组的长度。
此方法总是使用此字符集的默认替代字符串替代错误输入和不可映射字符序列。如果需要对解码过程进行更多控制,则应该使用 CharsetDecoder 类。
参数:
bytes - 要解码为字符的 byte
charset - 要用来解码 bytes 的 charset
for exam:
String name = request.getParameter(souceName);
String _name = new String(name.getBytes("iso-8859-1"), "gbk");
这里应该是浏览器会将请求URL,转成一个个字节(其实就相应于用了iso-8859-1编码方式转了,实质应该是直接转为二进制流的),所以到到controller层后,需用iso-8859-1转为一个个字节,后再用页面所用的编码格式来解析这些字节数据,再转为string(string在java是unicode编码的),便达到将浏览器转来的信息还原为正确的信息。
分享到:
相关推荐
使用`new String(byte[], charset)`构造函数,传入字节数组和相应的字符编码。例如: ```java byte[] bytes = {72, 101, 108, 108, 111, 44, 32, 87, 111, 114, 108, 100, 33}; String str = new String(bytes, ...
在C#中,我们可以使用Encoding类、Convert类和String.Format方法将字符串、Byte数组、十六进制字符串和汉字字符串之间进行转换。但是,在处理汉字和十六进制字符时,我们需要特别注意编码问题。
String base64 = Base64.getEncoder().encodeToString("测试字符串".getBytes("UTF-8")); System.out.println(base64); ``` 2. **将Base64转换为byte[]** - 使用`BASE64Decoder`实例进行解码: ```java BASE...
byte[] gbkBytes = unicodeStr.getBytes("GBK"); ``` 3. **GBK文件读写**: - 读取GBK编码的文件,需要设置正确的编码: ```java File file = new File("path_to_gbk_file"); FileInputStream fis = new ...
- 反之,可以使用`new String(byte[], Charset)`构造函数将字节数组转换为字符串。 ```java public static String byteToString(byte[] bytes) { return new String(bytes, StandardCharsets.UTF_8); } ``` #...
字符串的转换相对简单,可以直接使用`String.getBytes()`方法获取字符串对应的`byte[]`。 ```java public static byte[] stringToBytes(String s, int length) { while (s.getBytes().length ) { s += ""; // 填充...
本文将深入探讨Java中设置String字符串编码的方法,帮助开发者更好地理解和使用这些功能。 首先,我们需要理解什么是字符编码。字符编码是将字符(如字母、数字和符号)与数字或二进制值关联的系统,例如ASCII、...
- `getBytes(Charset charset) / new String(byte[] bytes, Charset charset)`: 指定字符集进行转换。 8. **迭代与遍历**: - `iterator()`: 获取一个迭代器,可以逐个访问字符串中的字符。 以上是`String`类的...
byte[] bytes = chs.GetBytes(s); string str = ""; for (int i = 0; i < bytes.Length; i++) { str += string.Format("{0:X}", bytes[i]); // 转换为十六进制 if (fenge && (i != bytes.Length - 1)) { str...
除了自定义方法外,Android也提供了`java.util.Formatter`和`java.nio.charset.StandardCharsets`等类来进行转换。例如: ```java public String stringToHex(String input) { return String.format("%0" + (input...
1. `getBytes(short data)` 和 `getShort(byte[] bytes)` - 这两个方法处理short类型。`getBytes(short data)` 将short值拆分成两个字节,并放入新创建的byte数组中。`getShort(byte[] bytes)` 取反操作,将两个...
在Java中,可以使用`String.getBytes()`和`new String(byte[], charset)`;在JavaScript中,可以使用`Buffer`对象的`toString('hex')`和`from`方法;在C++中,可以利用`std::stringstream`和`std::hex`配合进行转换...
这是最直接的方法,例如`byte[] bytes = string.getBytes("charset")`,其中`charset`可以是任何支持的字符集,如"UTF-8"。如果不指定字符集,Java会使用平台默认的字符集。 2. **方法二**:手动转换。通过遍历字符...
byte[] utf8Bytes = hanzi.getBytes("UTF-8"); StringBuilder asciiStringBuilder = new StringBuilder(); for (byte b : utf8Bytes) { if (b >= 0 && b ) { asciiStringBuilder.append((char) b); } else { ...
4. **`public String fromUnicodeBytes(byte[] bytes, Charset charset)`**:此方法将按照指定的字符集(如 UTF-8)解码字节数组,返回原始中文字符串。 在实际应用中,`unicodeConvert.java` 类可能会包含异常处理...
byte[] gbkBytes = chineseText.getBytes("GBK"); String utf8Text = new String(gbkBytes, "UTF-8"); ``` 从提供的压缩包文件列表来看,有`.bat`、`.class`和`.java`文件,这可能是一个简单的Java命令行程序,用于...
4. `String`类的`getBytes()`和`new String(byte[], charset)`方法处理编码和解码。 5. 文件读写时,可以使用`FileReader`、`FileWriter`,或者指定字符集的`InputStreamReader`和`OutputStreamWriter`。 6. 在网络...
本文将详细介绍Java中与编码解码相关的几个关键概念和方法,帮助开发者更好地理解并解决编码问题。 #### 1. 字符串的编码与解码 在Java中,字符串的编码和解码主要通过`getBytes()`和`new String()`方法来实现。 ...
byte[] gbkBytes = gbkStr.getBytes("GBK"); Charset gbkCharset = Charset.forName("GBK"); Charset utf8Charset = Charset.forName("UTF-8"); // 解码GBK字节流 CharBuffer charBuffer = gbkCharset.decode...