本文目录一览:
- java如何把string转为utf-8
- java怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串
- java 转码问题
- java文件读取内容转码
- java 怎么gbk转码utf-8
java如何把string转为utf-8
java不同编码之间进行转换,都需要使用unicode作为中转。
String str = "任意字符串";
str = new String(str.getBytes("gbk"),"utf-8");
备注说明:
str.getBytes("UTF-8");
意思是以UTF-8的编码取得字节new String(XXX,"UTF-8");
意思是以UTF-8的编码生成字符串
举例:
public static String getUTF8XMLString(String xml) {
// A StringBuffer Object
StringBuffer sb = new StringBuffer();
sb.append(xml);
String xmString = "";
String xmlUTF8="";
try {
xmString = new String(sb.toString().getBytes("UTF-8"));
xmlUTF8 = URLEncoder.encode(xmString, "UTF-8");
System.out.println("utf-8 编码:" + xmlUTF8);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// return to String Formed
return xmlUTF8;
}
扩展资料:
UTF-8编码规则:
- 如果只有一个字节则其最高二进制位为0;
- 如果是多字节,其第一个字节从最高位开始,连续的二进制位值为1的个数决定了其编码的字节数,其余各字节均以10开头。
- 实际表示ASCII字符的UNICODE字符,将会编码成1个字节,并且UTF-8表示与ASCII字符表示是一样的。所有其他的UNICODE字符转化成UTF-8将需要至少2个字节。每个字节由一个换码序列开始。第一个字节由唯一的换码序列,由n位连续的1加一位0组成,首字节连续的1的个数表示字符编码所需的字节数。 参考资料来源:百度百科:UTF-8
java怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串
通过JDK1.6知道String
类中getBytes("编码")
方法可以将一个字符串用指定的编码转成一个字节数组,String
中通过指定的 charset解码指定的 byte 数组,构造一个新的 String。代码如下:
try {
String s = "java学习";
System.out.println(s);
String result = new String(s.getBytes("GB2312"),"iso-8859-1");
System.out.println(s);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
扩展资料:
getBytes() 方法有两种形式:
getBytes(String charsetName)
:使用指定的字符集将字符串编码为 byte 序列,并将结果存储到一个新的 byte 数组中。getBytes()
:使用平台的默认字符集将字符串编码为 byte 序列,并将结果存储到一个新的 byte 数组中。 参考资料:百度百科-getBytes()
java 转码问题
看我这个,是本人原创。不管你是任何编码都可以解决,唯一的缺点是效率稍微低了点(不过比楼上那个要快)。
思路:
- 首先在jsp页面即客户端用JavaScript将汉字处理成asc码
- 服务端再将asc码还原成原有的字符
JavaScript转换代码:
var s=document.getElementById("text").value;
var t="";
//将汉字转换成ASCII码,然后在服务器端里再根据ASCII码转换成相应的字符
for(i=0; i<s.length; i++){
t+=s.charCodeAt(i)+" ";//将字符转换成相应的ASCII码并用空格隔开;
}
java服务端还原:
String param=request.getParameter("param");
StringBuffer buf=new StringBuffer("");
String[] ss = param.split(" ");
for (int i = 0; i < ss.length; i++) {
char c = (char) Integer.parseInt(ss[i].trim());
buf.append(c);
}
System.out.println("还原后的字符是:"+buf.toString());
如果你再把转换后的asc码再加个数字或者减个数字就是一个简单的加密,O(∩_∩)O~,希望对你有所帮助。
java文件读取内容转码
读取的文件流如果是read
(读取字节流的时候,中文就会是乱码)方法,所以现在全都是通过readLine
方式进行的读取。
举例:
可以通过BufferedReader
流的形式进行流缓存,之后通过readLine
方法获取到缓存的内容。
BufferedReader bre = null;
try {
String file = "D:/test/test.txt";
bre = new BufferedReader(new FileReader(file)); //此时获取到的bre就是整个文件的缓存流
while ((str = bre.readLine()) != null) { // 判断最后一行不存在,为空结束循环
System.out.println(str); //原样输出读到的内容
}
bre.close(); //关闭流,否则bre流会一直存在,直到程序运行结束。
} catch (Exception e) {
e.printStackTrace();
}
除此之外,java文件读取的时候有中文就很出现乱码,通常获取到的文件中通常都是“iso8859-1”格式,需要转换为“UTF-8”格式。 如:
String str = new String(str.getBytes("iso8859-1"),"UTF-8");
进行下强制转换后在进行读取即可。 备注: 通常格式有GBK、UTF-8、iso8859-1、GB2312,如果上面的强制转换不成功,依次进行这些格式的尝试,肯定是可以解决问题的。
java 怎么gbk转码utf-8
方法一:
思路: 先转为Unicode,然后转为GBK
String utf8 = new String(t.getBytes("UTF-8"));
System.out.println(utf8);
String unicode = new String(utf8.getBytes(), "UTF-8");
System.out.println(unicode);
String gbk = new String(unicode.getBytes("GBK"));
System.out.println(gbk);
方法二:
public static void main(String[] args) {
String str="字符串编码转换";
try {
byte[] temp=str.getBytes("utf-8");//这里写原编码方式
byte[] newtemp=new String(temp,"utf-8").getBytes("gbk");//这里写转换后的编码方式
String newStr=new String(newtemp,"gbk");//这里写转换后的编码方式
System.out.println(newStr);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}