想在java把字符串转换成utf-8的形式 。(其中字符串中的内容包括英文或汉字)
找到如下一个函数,如果字符串时英文的,转化应该没问题;要是中文的,如“你好”,用该函数转换后则变成 %E4%BD%A0这种形式了 应该怎么办? 是否还需要一个汉字转化成utf-8的函数?public static String toUtf8String(String s) {
StringBuffer sb = new StringBuffer();
for (int i=0;i<s.length();i++) {
char c = s.charAt(i);
if (c >= 0 && c <= 255) {
sb.append(c);
} else {
byte[] b;
try {
b = Character.toString(c).getBytes("utf-8");
} catch (Exception ex) {
System.out.println(ex);
b = new byte[0];
}
for (int j = 0; j < b.length; j++) {
int k = b[j];
if (k < 0) k += 256;
sb.append("%" + Integer.toHexString(k).
toUpperCase());
}
}
}
return sb.toString();
}
找到如下一个函数,如果字符串时英文的,转化应该没问题;要是中文的,如“你好”,用该函数转换后则变成 %E4%BD%A0这种形式了 应该怎么办? 是否还需要一个汉字转化成utf-8的函数?public static String toUtf8String(String s) {
StringBuffer sb = new StringBuffer();
for (int i=0;i<s.length();i++) {
char c = s.charAt(i);
if (c >= 0 && c <= 255) {
sb.append(c);
} else {
byte[] b;
try {
b = Character.toString(c).getBytes("utf-8");
} catch (Exception ex) {
System.out.println(ex);
b = new byte[0];
}
for (int j = 0; j < b.length; j++) {
int k = b[j];
if (k < 0) k += 256;
sb.append("%" + Integer.toHexString(k).
toUpperCase());
}
}
}
return sb.toString();
}
return new String(s.getBytes("UTF-8"),"UTF-8"):
}
所以才会出现这种情况,
如果在程序中使用
s.getBytes("UTF-8"),"UTF-8");
这样就可以了。
public static String toUtf8String(String s) {
return new String(s.getBytes("UTF-8"),"UTF-8"):
}
不管s中是英文还是汉字,都可以把它转换成utf-8的形式么??
你查到的方法由于使用户html请求的,
所以才会有区别。s.getBytes("UTF-8");
的意思是以UTF-8的编码取得字节
new String(XXX,"UTF-8");
的意思是以UTF-8的编码生成字符串