㈠ java怎么对string编码
参考如下代码:
package com.qiu.lin.he;
import java.io.UnsupportedEncodingException;
public class Ceshi {
public static void main(String[] args) {
String name = "张三";
byte[] b1 = null;
try {
b1 = name.getBytes("UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
String name1 = "";
try {
name1 = new String(b1, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} // 编码解码相同,正常显示
System.out.println(name1);
String name2 = "";
try {
name2 = new String(b1, "GBK");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} // 编码解码不同,乱码
System.out.println(name2);
}
}
运行结果为:
㈡ java中的String的默认编码是什么
可以通过如下代码获得默认编码:
System.out.println(Charset.defaultCharset());
字符编码(英语:Character encoding)也称字集码,是把字符集中的字符编码为指定集合中某一对象(例如:比特模式、自然数序列、8位组或者电脉冲),以便文本在计算机中存储和通过通信网络的传递。常见的例子包括将拉丁字母表编码成摩斯电码和ASCII。其中,ASCII将字母、数字和其它符号编号,并用7比特的二进制来表示这个整数。通常会额外使用一个扩充的比特,以便于以1个字节的方式存储。
在计算机技术发展的早期,如ASCII(1963年)和EBCDIC(1964年)这样的字符集逐渐成为标准。但这些字符集的局限很快就变得明显,于是人们开发了许多方法来扩展它们。对于支持包括东亚CJK字符家族在内的写作系统的要求能支持更大量的字符,并且需要一种系统而不是临时的方法实现这些字符的编码。
㈢ java里关于String的编码与解码
从语言编码的角度,getBytes(charset)不是解码、也不是编码,是转换。API 说的是针对数据的角度。把一个整体的String分解成byte[]了。
byte[] b2=s.getBytes("gbk");
String ss=new String(b2,"utf-8");
从GBK转换成UTF-8。
UTF8包含更多的文字量。
㈣ 请问java如何改变字符串的编码方式
byte[] b=string.getBytes("GB2312");//使用GB2312编码方式对字符串string进行编码
//这时要想将字节数组b的内容正确解码只能使用GB2312的编码方式进行解码,即
String str=new String(b,"GB2312");//这里若使用UTF-8编码方式来进行解码就会乱码
//将eclipse默认的编码方式改为UTF-8,只是用该编码方式对.java源文件进行编码保存
//这个对new String(string.getBytes("GB2312"),"UTF-8")没啥影响的
//因为从java源文件获取字符串string时,已经通过UTF-8编码方式进行解码了
//而string.getBytes("GB2312")是使用指定的编码方式对字符串string进行从新编码
//这两者之间没啥关系的
㈤ java中如何修改字符串编码
StringBuilder
sb
=
new
StringBuilder();
//
创建URL
URL
url
=
new
URL("GBK
page
URL");
//
打开请求链接
URLConnection
page
=
url.openConnection();
//
以GBK格式读取返回流
BufferedReader
in
=
new
BufferedReader(new
InputStreamReader(page.getInputStream(),"GBK"));
//
读取流内容
String
inputLine;
while
((inputLine
=
in.readLine())
!=
null)
{
sb.append(inputLine);
}
sb.toString();
㈥ Java怎么将字符串转换为GB2312原编码
@Test
publicvoidtest333(){
Stringa="青白";
try{
byte[]b=a.getBytes("GB2312");
System.out.println(bytesToHexFun1(b));
}catch(UnsupportedEncodingExceptione){
e.printStackTrace();
}
}
//将byte数组转成16进制字符串
(byte[]bytes){
char[]HEX_CHAR={'0','1','2','3','4','5',
'6','7','8','9','a','b','c','d','e','f'};
//一个byte为8位,可用两个十六进制位标识
char[]buf=newchar[bytes.length*2];
inta=0;
intindex=0;
for(byteb:bytes){//使用除与取余进行转换
if(b<0){
a=256+b;
}else{
a=b;
}
buf[index++]=HEX_CHAR[a/16];
buf[index++]=HEX_CHAR[a%16];
}
returnnewString(buf);
}
中心思想就是先转成GB2312的byte数组,再转成16进制就可以了。
㈦ javastring编码
从ISO-8859-1编码转为GBK编码,因为所有的编码底层都是Unicode编码就是为了编码的统一
最后是GBK编码,默认看eclipse的配置,不该的情况是ISO-8859-1,最好改为UTF-8
㈧ 怎么用java把一个字符串进行utf8编码
String text = “字符串”;
byte[] b_utf8 = text.getBytes("UTF-8"); //utf-8
byte[] b_iso88591 = text.getBytes("ISO8859-1"); //iso8859-1
byte[] b_gbk = text.getBytes("GBK"); //gbk
string unicode = getUnicode(text);//unicode
public static String getUnicode(String source) {
String result = "";
for (int i = 0; i < source.length(); i++) {
result += "\u"+Integer.toHexString((int) source.charAt(i));
}
return result;
}
㈨ 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;
(9)javastring设置编码扩展阅读:
UTF-8编码规则:
如果只有一个字节则其最高二进制位为0;如果是多字节,其第一个字节从最高位开始,连续的二进制位值为1的个数决定了其编码的字节数,其余各字节均以10开头。
实际表示ASCII字符的UNICODE字符,将会编码成1个字节,并且UTF-8表示与ASCII字符表示是一样的。所有其他的UNICODE字符转化成UTF-8将需要至少2个字节。每个字节由一个换码序列开始。第一个字节由唯一的换码序列,由n位连续的1加一位0组成,首字节连续的1的个数表示字符编码所需的字节数。
Unicode转换为UTF-8时,可以将Unicode二进制从低位往高位取出二进制数字,每次取6位,如上述的二进制就可以分别取出为如下示例所示的格式,前面按格式填补,不足8位用0填补。
㈩ java中文乱码,能说下string.getBytes()和new String()转码是,具体点。
1、Java中,【String.getBytes(String decode)】的方法,会根据指定的decode,编码返回某字符串在该编码下的byte数组表示,例如:
byte[] b_gbk = "中".getBytes("GBK");
byte[] b_utf8 = "中".getBytes("UTF-8");
byte[] b_iso88591 = "中".getBytes("ISO8859-1")
上面三行代码表示:分别返回“中”这个汉字在GBK、UTF-8和ISO8859-1编码下的byte数组表示,此时b_gbk的长度为2,b_utf8的长度为3,b_iso88591的长度为1。
2、而通过【new String(byte[], decode)】的方式来还原这个“中”字时,实际是使用decode指定的编码来将byte[ ]解析成字符串,例如:
String s_gbk = new String(b_gbk,"GBK");
String s_utf8 = new String(b_utf8,"UTF-8");
String s_iso88591 = new String(b_iso88591,"ISO8859-1");
s_gbk和s_utf8都是“中”,而只有s_iso88591是一个不认识 的字符,因为ISO8859-1编码的编码表中,根本就没有包含汉字字符,当然也就无法通过"中".getBytes("ISO8859-1")。
因此,通过【String.getBytes(String decode)】方法来得到byte[ ]时,要确定decode的编码表中确实存在String表示的码值,这样得到的byte[ ]数组才能正确被还原。
(10)javastring设置编码扩展阅读
java中文编码避免乱码
1、为了让中文字符适应某些特殊要求(如http header头要求其内容必须为iso8859-1编码),可能会通过将中文字符按照字节方式来编码的情况,比如:
String s_iso88591 = new String("中".getBytes("UTF-8"),"ISO8859-1")
2、上述例子中的s_iso8859-1字符串实际是三个在 ISO8859-1中的字符,在将这些字符传递到目的地后,目的地程序再通过相反的方式:
String s_utf8 = new String(s_iso88591.getBytes("ISO8859-1"),"UTF-8")
来得到正确的中文汉字。这样就既保证了遵守协 议规定、也支持中文。
3、String.getBytes(String decode)方法会根据指定的decode编码返回某字符串在该编码下的byte数组表示这里是encode ,not decode,从字符串到字节数组是编码的过程,从字节数组到字符串(即 new String(byte[] , charsetname))才是解码的过程。