`

java中String的getBytes方法使用

 
阅读更多

<div class="iteye-blog-content-contain" style="font-size: 14px"></div>

        最近用socket通讯,用IO流发送接收数据,双方约定好了接口规范,字段的长度,但是发现发过来的数据老是报数组溢出错误,后来发现windows和linux的默认编码格式不一样,前者是gbk,后者是utf-8,而一个中文gbk是2个字节,utf-8是3个字节,用getBytes()将字符串转换为字节数组,若不指定编码方式,则会根据平台的默认编码方式,故若是不指定编码格式的话的话,那么将程序部署到linux下后一个中文汉字就是3个字节,此时若你指定的byte[80]接收40个汉字,那么此时用getBytes()转换后实际上是有120个字节,就会导致溢出。

      下面举一个简单的例子(在windows下):

public class Test {
	public static void main(String[] args) {
		String a="哈哈";
		try {
			   byte[] aa = a.getBytes("GB2312");
			   byte[] ab = a.getBytes("UTF-8");
			   byte[] ac = a.getBytes();
			   System.out.println(aa.length);
			   System.out.println(ab.length);
			   System.out.println(ac.length);
			  } catch (Exception e) {
			   // TODO Auto-generated catch block
			   e.printStackTrace();
			  }
	}
}

输出是:4 6 4

 

分享到:
评论

相关推荐

    Java中的String类getBytes()方法详解与实例

    在本文中,我们学习了Java String类的getBytes()方法,它允许将字符串转换为字节数组,并且可以指定字符编码方式。通过实例和代码演示了使用平台默认字符编码和指定UTF-8、ISO-8859-1字符编码的情况。getBytes()方法...

    StringAPI.java

    Java String 类型 API 测试代码 1.String和char[]之间的转换 toCharArray(); 2.String和byte[]之间的转换 getBytes() Arrays工具类 : Arrays.toString(names) String类 String replace(char oldChar, ...

    智能识别收货地址Java.pdf

    智能识别收货地址Java import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; ...

    java编程出现中文乱码解决方法一

    解决java编程中出现的中文乱码的问题 编写一个静态方法,然后在中文的输出字段转换 public static String Chinese( String value){ try { if (value==null){ return ""; }else{ value=new String(value....

    java 小程序 课程设计 java

    java坦克大战 课程设计 String str_to=request.getParameter("to"); String str_subject=new String(request.getParameter("subject").getBytes("ISO-8859-1")); String str_content=new String(request....

    java URL中文参数乱码处理

    js 中乱码处理法方式 encodeURIComponent(encodeURIComponent(customerAddress)) decodeURIComponent(customerName) js到java encodeURI(url) String qijuType= new String(request.getParameter( (...

    java发送短信之AT指令

    public String sendAT(String atcommand) throws java.rmi.RemoteException { String s = ""; try { Thread.sleep(100); writeln(atcommand); Thread.sleep(80); s = read(); Thread.sleep(100); } catch ...

    JS实现对中文字符串进行utf-8的Base64编码的方法(使其与Java编码相同)

    使用JAVA进行编码,Java程序: String sql = select 用户名 from 用户; String encodeStr = new String(Base64.encode(sql.getBytes(UTF-8))); // 编码 System.out.println(encodeStr); 得到: c2VsZWN0IOeUqOaIt...

    C#加密JAVA解密

    C# 加密 JAVA 解密源码 using System; using System.IO; using System.Security.Cryptography; namespace WindowsApplication1 { /// /// Security 的摘要说明。 /// public class Security { const string...

    java网络编程示例

    buffer = new String("hello").getBytes(); DatagramPacket packet=null; try { packet = new DatagramPacket(buffer, buffer.length,new InetSocketAddress("127.0.0.1", 4444)); DatagramSocket ...

    java 面试题 总结

    子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。...

    微信公众平台JAVA版【绝对可用】

    String digest = new SHA1().getDigestOfString(bigStr.getBytes()).toLowerCase(); if(digest.equals(signature)){ response.setCharacterEncoding("utf-8"); System.out.println(echostr);

    Java语言程序设计(第3版)第06章-字符串.pptx

    6.1.1 字符串比较 Java语言程序设计(第3版) 不能使用"=="号来比较字符串内容是否相等 比较内容是否相等: boolean equals(String str) boolean equalsIgnoreCase(String str) s1 s2 Hello Hello 字符串常量池 s1 s2...

    Java加密和数字签名编程快速入门

    和通过散列密码直接以文本形式保存等,目前广泛使用的算法有MD4、MD5、SHA-1,jdk1.5对上面都提供了支持,在java中进行消息摘要很简单, java.security.MessageDigest提供了一个简易的操作方法: import java....

    java字符串操作大全

     替代getChars()的一种方法是将字符存储在字节数组中,该方法即getBytes()。 5、toCharArray() 6、equals()和equalsIgnoreCase() 比较两个字符串 7、regionMatches() 用于比较一个字符串中特定区域与另一特定...

    JAVA调用SAP ODATA服务

    String encodeAuth = "Basic " + new String(Base64.getEncoder().encode(auth.getBytes(StandardCharsets.UTF_8))); connection.setRequestProperty("Authorization", encodeAuth); 2、POST方法地址; 解决方法...

    java 爬网 程序 示例

    // keyword = new String(param.getBytes("gb2312"), "ISO-8859-1"); // } catch (UnsupportedEncodingException e1) { // // TODO Auto-generated catch block // e1.printStackTrace(); // } // ...

    史上最全的java基础总结大全

    public static void main(String[] args) { //编码解码1:默认编码 String str1 = "你好"; byte[] buf1 = str1.getBytes();//默认解码:Unicode,四个字节 //编码解码2:指定编码 String str2 = "你好"; ...

    JAVA中的字符编码操作

    在JAVA源文件–&gt;JAVAC编译–&gt;Class–&gt;Java运行–&gt;getBytes()–&gt;newString()–&gt;显示的过程中,  每一步都有编码的转换过程,这个过程总是存在的,只是有的时候用默认的参数进行。  在编写JAVA源文件的时候要指定...

    数据库工具类DatabaseUtil.java

    * 返回记录总数, 使用方法: getAllCount("SELECT count(ID) from tableName") 2004-06-09 * 可滚动的 Statement 不能执行 SELECT MAX(ID) 之类的查询语句(SQLServer 2000) * * @param sql * 需要执行的 SQL *...

Global site tag (gtag.js) - Google Analytics