`
sonyfe25cp
  • 浏览: 203820 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java中utf-8编码的String变成byte数组

阅读更多
描述:
1.页面上输入汉字,然后提交utf-8编码格式
2.后台接收该汉字,将汉字分开.获得其utf-8编码


页面文件:
<%@ page contentType="text/html;charset=utf-8"%>
<%request.setCharacterEncoding("utf-8");%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
     <meta http-equiv="content-type" content="text/html; charset=UTF-8"> 
    <title>My JSP 'index.jsp' starting page</title>
  </head>
  
  <body>
    <form action = "servlet\InputTest" method = "get">
    	<input type="text" name="inputtext" />
    	<input type="submit" />
    </form>
  </body>
</html>



后台文件:
		throws ServletException, IOException {

		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		out
				.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
		out.println("<HTML>");
		out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
		out.println("  <BODY>");
		out.print("    This is ");
		out.print(this.getClass());
		out.print(" [ ");
		if (request.getParameter("inputtext") != null) {
			String t = request.getParameter("inputtext");
			out.println(t);
			
			System.out.println(t+"   :t.value");
			System.out.println(t.length()+"   :t.length");
			
			for (int i = 0 ; i < t.length() ; i++) {
			    System.out.println(Integer.toHexString((byte)t.charAt(i)& 0xFF).toUpperCase()+"   :t.charAt");
			}
out.print(" ] ");
		out.println(", using the GET method");
		out.println("  </BODY>");
		out.println("</HTML>");
		out.flush();
		out.close();
	}
}


虽然有乱码...但取到了前台页面的汉字的utf-8的码了...具体怎么把乱码再去掉..目前还未解决...后续完成之..

ps:
将通过request.getParameter()方法或得到的String直接得到byte[],封装成了一个方法..如下
public byte[] transFromUTF8(String s){
		byte[] b=new byte[s.length()];
		for (int i = 0 ; i < s.length() ; i++) {
		    System.out.println(Integer.toHexString((byte)s.charAt(i)& 0xFF).toUpperCase()+"   :16进制utf-8");
		    b[i]=(byte)s.charAt(i);
		}
		return b;
	}


控制台打印效果:
前台输入"士大夫"
后台显示:
????¤§?¤?   //  乱码状态的"士大夫"
9   :t.length  //士大夫 这三个字的byte长度
E5   :t.charAt // 这些就是士大夫 三个字的UTF-8编码...每个字由3个构成
A3   :t.charAt
AB   :t.charAt
E5   :t.charAt
A4   :t.charAt
A7   :t.charAt
E5   :t.charAt
A4   :t.charAt
AB   :t.charAt


---------------------------------------
将自己学习中的东西记录下来...

分享到:
评论

相关推荐

    java 中文字符串,utf-8编码为byte数组的计算过程

    本文将深入探讨如何将中文字符串转换成UTF-8编码的字节数组,并解析这一过程中的计算步骤。UTF-8是一种广泛使用的Unicode字符编码,它可以表示Unicode字符集中的所有字符。 首先,我们需要明白Unicode字符集是一个...

    Java避免UTF-8的csv文件打开中文出现乱码的方法

    如果需要兼容多个Excel版本,可以使用UTF-8编码格式,并在文件头部输出BOM,即0xEF 0xBB 0xBF这三个字节。 Java避免UTF-8的csv文件打开中文出现乱码的方法是使用UTF-16LE编码格式,并在文件头部输出BOM。同时,需要...

    关于JAVA字符编码:Unicode,ISO-8859-1,GBK,UTF-8编码及相互转换

    ### 关于JAVA字符编码:Unicode, ISO-8859-1, GBK, ...在实际开发中,建议尽可能使用UTF-8编码,因为它可以很好地支持各种语言,并且与ASCII兼容。同时,开发者还需要注意不同编码之间的转换细节,避免出现乱码等问题。

    utf8与string的相互转换

    在Java中,String类也是用于存储和操作字符序列,同样支持UTF-8编码。 实现UTF-8与字符串之间的转换通常需要特定的函数或方法。在Python中,你可以使用内置的`encode`和`decode`函数进行转换: ```python # 字符串...

    【源代码】明解Java-UTF-8.rar

    《明解Java-UTF-8》是一门针对Java编程语言和UTF-8编码的课程,其课后提供的源代码旨在帮助学习者巩固所学知识,适用于初学者和希望深入理解Java的同学。UTF-8是一种广泛使用的字符编码标准,能够表示Unicode字符...

    JAVA字符编码:Unicode,ISO-8859-1,GBK,UTF-8编码及相互转换

    - **Unicode到UTF-8**: 同样以"a 中文"为例,转换为UTF-8编码后,字节数组为`0x61 0xE4 0xB8 0xAD 0xE6 0x96 0x87`。 - **UTF-8到Unicode**: 反向转换后,结果依然是"a 中文"。 ##### 3. Unicode与ISO-8859-1 - **...

    GBK与UTF-8之间的转换

    最后,我们将UTF-8编码的字节添加到fullByte数组中,得到最终的UTF-8编码的字节数组。 GBK与UTF-8之间的转换需要我们了解编码的基本原理和规则,正确地将GBK编码的字符串转换成UTF-8编码的字符串。同时,我们也需要...

    简单说说JAVA的String和byte[]的关系

    // 从UTF-8编码的字节数组转换回String String str2 = new String(bytes, "UTF-8"); ``` 如果在解码时不正确地指定了字符集(例如使用了"GBK"而不是"UTF-8"),那么将会导致乱码问题。 #### 五、应用场景 1. **...

    String(含Hex)与Byte数组互相转换[代码]

    使用`getBytes()`方法,它会根据默认的字符编码(通常是UTF-8)将字符串转换为字节数组。例如: ```java String str = "Hello, World!"; byte[] bytes = str.getBytes(); ``` 2. 字节数组转字符串: 使用`new...

    java编码格式转换

    - 将UTF-8编码的字节数组转换为Unicode字符串:`byte[] utf8s = {0xe4, 0xb8, 0xad, 0xe6, 0x96, 0x87}; String s = new String(utf8s, "UTF-8");` - **Unicode与ISO-8859-1之间的转换**: - 由于ISO-8859-1编码...

    java字符编码问题

    1. **UTF-8编码**:通过`name.getBytes("UTF-8")`获取到的byte数组长度为3,这是因为“你”这个汉字在UTF-8编码下占用了3个字节。 2. **UTF-16编码**:通过`name.getBytes("UTF-16")`获取到的byte数组长度为4,这是...

    utf8转GB2312

    当一个UTF-8编码的文本在GB2312环境下显示或处理时,如果没有进行正确的转换,就可能出现乱码问题。这是因为UTF-8和GB2312编码之间存在不兼容性:UTF-8使用1到4个字节来表示一个字符,而GB2312只使用2个字节。所以,...

    Android byte[] 和 String互相转换

    为了避免这个问题,我们通常指定一个明确的字符编码,例如UTF-8: ```java public static String byteToHex(byte[] bytes) { return new String(bytes, StandardCharsets.UTF_8); } ``` ### 二、`String` 转 `...

    java字符集编码问题

    使用`getBytes("UTF-8")`方法,可以获得“中文”的UTF-8编码,即字节数组“e4 b8 ad e6 96 87”。 3. **从GBK编码恢复原字符串** 如果我们有字节数组“d6 d0 ce c4”,并已知它是GBK编码,可以使用`new String...

    java utf8 to gb2312

    本文介绍了 Java 中 UTF-8 转 GB2312 的编码转换原理及实现方法。通过对给定代码片段的分析,指出了存在的问题,并给出了正确的实现方案。在实际开发过程中,了解并掌握字符编码的转换对于避免乱码等问题至关重要。

    【IT十八掌徐培成】Java基础第09天-005.String-字符集编码.zip

    字符编码问题常常出现在不同系统之间进行数据交换时,例如,一个使用GBK编码的Java程序发送数据到使用UTF-8编码的服务器,如果没有正确处理编码转换,可能会出现乱码。因此,理解并掌握字符集编码对于处理跨平台的...

    Base64与byte[]相互转换

    String base64 = Base64.getEncoder().encodeToString("测试字符串".getBytes("UTF-8")); System.out.println(base64); ``` 2. **将Base64转换为byte[]** - 使用`BASE64Decoder`实例进行解码: ```java BASE...

    java实现十六进制字符unicode与中英文转换示例

    例如,`new String(bs, "utf-8")`将字节数组`bs`解码为UTF-8编码的字符串。`substring`方法用于从原始字符串中提取出每两个字符(一个字节的十六进制表示),并使用`Integer.parseInt`将其转换为十进制整数,进而...

    JAVA里字符编码的探索与理解.txt

    #### 三、JAVA中的UTF-8编码 UTF-8是JAVA中最常用的字符编码方式之一。它是一种可变长度的编码方案,对于常见的ASCII字符(即UNICODE码点在U+0000到U+007F之间的字符),UTF-8编码和ASCII编码完全相同;而对于其他...

Global site tag (gtag.js) - Google Analytics