简单问题 急 在线等 请问各位大虾 java里的汉字应该怎么才占一个字节呢?比如:"交易成功"才算4位吗?如何让他算8位呢?多谢了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 JAVA中使用unicode编码,unicode里每个字符都占两个字节 但是为什么会出先如下问题:String a="交易成功0009"String b=a.substring(0,4)得出来的结果b="交易成功0009" 我是从unix接收到的数据,应该转换一下编码吗? 不好意思,上面写错了String a="交易成功0009"String b=a.substring(0,8)得出来的结果b="交易成功0009"而正确的是想要 b="交易成功" substring是按字符个数来截取的,不是按字节截取的 String a="交易成功0009";String b=a.substring(0,4); 可是我不能改成String b=a.substring(0,4);因为8是我从数据包里取出来的,完整的包是这样的"0008交易成功0009jfdkf",我先取出0008知道要取的数据位数是8,然后再取,所以就出现这个问题了 /** * 按字节长度截取字符串 * @param str 将要截取的字符串参数 * @param toCount 截取的字节长度 * @param more 字符串末尾补上的字符串 * @return 返回截取后的字符串 */ public static String substring(String str, int toCount, String more) { int reInt = 0; String reStr = ""; if (str == null) return ""; char[] tempChar = str.toCharArray(); for (int kk = 0; (kk < tempChar.length && toCount > reInt); kk++) { String s1 = str.valueOf(tempChar[kk]); byte[] b = s1.getBytes(); reInt += b.length; reStr += tempChar[kk]; } if (toCount == reInt || (toCount == reInt - 1)) reStr += more; return reStr; } Swing关闭面板的问题 在GUI编程中如何监视TextField对象中文本的改变? Thinking In Java 那本书都看过吗? 到底好在哪里? java的一个小问题 求象棋的java棋谱 怎样从jar文件取得程序需要的xml文件? 请问用什么方法可以获取系统时间啊? 简单问题,weblogic到底做什么的? 浏览器不能浏览JAVA2写的Applet,那里可有升级包? 新手,问下简单计算机面板的问题。。 为什么每次进DOS,classpath就要重新设定? 怎么实现press any key to continue?(问了n次,没人理:( )
String b=a.substring(0,4)
得出来的结果
b="交易成功0009"
String a="交易成功0009"
String b=a.substring(0,8)
得出来的结果
b="交易成功0009"
而正确的是想要 b="交易成功"
String b=a.substring(0,4);
因为8是我从数据包里取出来的,完整的包是这样的"0008交易成功0009jfdkf",我先取出0008知道要取的数据位数是8,然后再取,所以就出现这个问题了
* 按字节长度截取字符串
* @param str 将要截取的字符串参数
* @param toCount 截取的字节长度
* @param more 字符串末尾补上的字符串
* @return 返回截取后的字符串
*/
public static String substring(String str, int toCount, String more) {
int reInt = 0;
String reStr = "";
if (str == null)
return "";
char[] tempChar = str.toCharArray();
for (int kk = 0; (kk < tempChar.length && toCount > reInt); kk++) {
String s1 = str.valueOf(tempChar[kk]);
byte[] b = s1.getBytes();
reInt += b.length;
reStr += tempChar[kk];
}
if (toCount == reInt || (toCount == reInt - 1))
reStr += more;
return reStr;
}