日期:2014-05-19  浏览次数:20688 次

关于空格显示的问题
package com.ut.test;

public class OutString {

/**
 * @param args
 */
public static void main(String[] args) {
String str = "清新";
String str2 = "党风奉为";
System.out.println(formatString(str, 8));
System.out.println(formatString(str2,8));
}

/**
 * 输出指定字节位数的字符串 
 * 所要输出的字节位数大于字符串的字节位数 补空格
 * 所要输出的字节位数小于字符串的字节位数 则截取
 * 
 * @param str
 *            要处理掉字符串
 * @param toCount
 *            指定的字节位数
 * @return
 */
public static String formatString(String str, int toCount) {
int reInt = 0;
StringBuilder reStr = new StringBuilder();
if (str == null)
return "";
char[] tempChar = str.toCharArray();
for (int kk = 0; (kk < tempChar.length && toCount > reInt); kk++) {
String s1 = String.valueOf(tempChar[kk]);
byte[] b = s1.getBytes();
reInt += b.length;
reStr.append(tempChar[kk]);
}
if (toCount == reInt || (toCount == reInt - 1)) {
String result = reStr.toString();
return result;
}
while (toCount > reInt) {
reStr.append(" ");
reInt++;
}
String result = reStr.toString();
return result;
}
}

为什么输出的字节位数一样 但是显示的长度不一致呢 
难道是空格的占位问题?求高手赐教!

------解决方案--------------------
你的程序没问题,一个输出8位,一个是9位
------解决方案--------------------
UTF-8的一个汉字占3个字节,ISO-8859-1的占2个字节
------解决方案--------------------
楼上 +++++1