导航:首页 > 编程语言 > java编码问题

java编码问题

发布时间:2022-07-08 20:04:50

java后台怎么解决编码问题

不用实现和继承,自己封装就可以了,想要什么转换自己对应封装方法就可以了,这样自己用起来也方便点。再往上找了个例子,你看看希望能帮到你!public class ChangeCharset {
/** 7位ASCII字符,也叫作ISO646-US、Unicode字符集的基本拉丁块 */
public static final String US_ASCII = "US-ASCII";

/** ISO 拉丁字母表 No.1,也叫作 ISO-LATIN-1 */
public static final String ISO_8859_1 = "ISO-8859-1";

/** 8 位 UCS 转换格式 */
public static final String UTF_8 = "UTF-8";

/** 16 位 UCS 转换格式,Big Endian(最低地址存放高位字节)字节顺序 */
public static final String UTF_16BE = "UTF-16BE";

/** 16 位 UCS 转换格式,Little-endian(最高地址存放低位字节)字节顺序 */
public static final String UTF_16LE = "UTF-16LE";

/** 16 位 UCS 转换格式,字节顺序由可选的字节顺序标记来标识 */
public static final String UTF_16 = "UTF-16";

/** 中文超大字符集 */
public static final String GBK = "GBK";

/**
* 将字符编码转换成US-ASCII码
*/
public String toASCII(String str) throws UnsupportedEncodingException {
return this.changeCharset(str, US_ASCII);
}

/**
* 将字符编码转换成ISO-8859-1码
*/
public String toISO_8859_1(String str) throws UnsupportedEncodingException {
return this.changeCharset(str, ISO_8859_1);
}

/**
* 将字符编码转换成UTF-8码
*/
public String toUTF_8(String str) throws UnsupportedEncodingException {
return this.changeCharset(str, UTF_8);
}

/**
* 将字符编码转换成UTF-16BE码
*/
public String toUTF_16BE(String str) throws UnsupportedEncodingException {
return this.changeCharset(str, UTF_16BE);
}

/**
* 将字符编码转换成UTF-16LE码
*/
public String toUTF_16LE(String str) throws UnsupportedEncodingException {
return this.changeCharset(str, UTF_16LE);
}

/**
* 将字符编码转换成UTF-16码
*/
public String toUTF_16(String str) throws UnsupportedEncodingException {
return this.changeCharset(str, UTF_16);
}

/**
* 将字符编码转换成GBK码
*/
public String toGBK(String str) throws UnsupportedEncodingException {
return this.changeCharset(str, GBK);
}

/**
* 字符串编码转换的实现方法
*
* @param str
* 待转换编码的字符串
* @param newCharset
* 目标编码
* @return
* @throws UnsupportedEncodingException
*/
public String changeCharset(String str, String newCharset)
throws UnsupportedEncodingException {
if (str != null) {
// 用默认字符编码解码字符串。
byte[] bs = str.getBytes();
// 用新的字符编码生成字符串
return new String(bs, newCharset);
}
return null;
}

/**
* 字符串编码转换的实现方法
*
* @param str
* 待转换编码的字符串
* @param oldCharset
* 原编码
* @param newCharset
* 目标编码
* @return
* @throws UnsupportedEncodingException
*/
public String changeCharset(String str, String oldCharset, String newCharset)
throws UnsupportedEncodingException {
if (str != null) {
// 用旧的字符编码解码字符串。解码可能会出现异常。
byte[] bs = str.getBytes(oldCharset);
// 用新的字符编码生成字符串
return new String(bs, newCharset);
}
return null;
}

public static void main(String[] args) throws UnsupportedEncodingException {
ChangeCharset test = new ChangeCharset();
String str = "This is a 中文的 String!";
System.out.println("str: " + str);
String gbk = test.toGBK(str);
System.out.println("转换成GBK码: " + gbk);
System.out.println();
String ascii = test.toASCII(str);
System.out.println("转换成US-ASCII码: " + ascii);
gbk = test.changeCharset(ascii, ChangeCharset.US_ASCII,
ChangeCharset.GBK);
System.out.println("再把ASCII码的字符串转换成GBK码: " + gbk);
System.out.println();
String iso88591 = test.toISO_8859_1(str);
System.out.println("转换成ISO-8859-1码: " + iso88591);
gbk = test.changeCharset(iso88591, ChangeCharset.ISO_8859_1,
ChangeCharset.GBK);
System.out.println("再把ISO-8859-1码的字符串转换成GBK码: " + gbk);
System.out.println();
String utf8 = test.toUTF_8(str);
System.out.println("转换成UTF-8码: " + utf8);
gbk = test.changeCharset(utf8, ChangeCharset.UTF_8, ChangeCharset.GBK);
System.out.println("再把UTF-8码的字符串转换成GBK码: " + gbk);
System.out.println();
String utf16be = test.toUTF_16BE(str);
System.out.println("转换成UTF-16BE码:" + utf16be);
gbk = test.changeCharset(utf16be, ChangeCharset.UTF_16BE,
ChangeCharset.GBK);
System.out.println("再把UTF-16BE码的字符串转换成GBK码: " + gbk);
System.out.println();
String utf16le = test.toUTF_16LE(str);
System.out.println("转换成UTF-16LE码:" + utf16le);
gbk = test.changeCharset(utf16le, ChangeCharset.UTF_16LE,
ChangeCharset.GBK);
System.out.println("再把UTF-16LE码的字符串转换成GBK码: " + gbk);
System.out.println();
String utf16 = test.toUTF_16(str);
System.out.println("转换成UTF-16码:" + utf16);
gbk = test.changeCharset(utf16, ChangeCharset.UTF_16LE,
ChangeCharset.GBK);
System.out.println("再把UTF-16码的字符串转换成GBK码: " + gbk);
String s = new String("中文".getBytes("UTF-8"), "UTF-8");
System.out.println(s);
}
}

❷ 关于java 编码问题,为什么运行不行

file.encoding指的是main函数入口的那个文件的编码,如果你设置CharCode.java文件的代码为GBK(edit-->set
encoding
-->other),那么输出的file.encoding就为GBK,如果设置的是iso8859-1,那么输出地file.encoding就为iso8859-1,如果是iso8859-1,那么你是CharCode.java文件里的代码里是输不进去中文的。

❸ java关于字符编码的问题!!

首先你要知道iso 8859-1是ASCII码的升级版。ASCII码的表示范围是0-127也就是单字节编码。
iso8859-1表示的范围是0-255 也是单字节编码.ascii码的-128~-1是不表东西的。iso8859-1和gbk都是单字节编码。所以是无法存储中文的。但可以存储英文。字符.
至于你说的unicode是但你这个程序有国际化的时候才用unicode编码.而本地码.只要是中文的系统运行。都可以用的。而且不会报错。

再说一点的。也是当时我学郁闷我老长时间的问题。为什么我存的是GB2312以Unicode取的时候会是乱码. 存的是unicode,以gb2312取又是? 其实你只要知道记住一点。你存的时候是什么编码存的。取的时候一定一定要以什么编码进行。也就是存取编码一定要一样。你记住这个就行。以后主要遇到编码的。你一定要想清楚你存的时候是怎么存的。然后取的时候一定要以你原来存的取!!!

❹ java 中编码解码问题

new String(strLine.getBytes("iso8859-1"),"gb2312")
其实这里很好明白
首先将字符串转换成byte数组。。以iso8859-1的编码来转换。。
然后使用new String创建一个新字符串,前面带上byte[]数组 后面带上他的具体编码。。
一般转码都使用这样的方式。。JSP里经常出现乱码的
都是加上过滤器然后中间使用这个new String(strLine.getBytes("iso8859-1"),"gb2312")方式将编码转换。
请采纳答案,支持我一下。

❺ JAVA 字符串 字节 编码问题 高手来

1.
编程序的时候如果:String
str="中文";在存成文件时,需要把这段文字存为数据(每个字节byte=8bit),即要编码,按照不同的编码方式(比如gb2312或者unicode),所以保存文件的时候需要指定编码,一般编辑器默认跟系统一致。java编译器,将源程序编码时,采用的是unicode编码方式,所以存在class文件中的字节码里的中文常量也是unicode的。这是源程序
2.
在程序处理时,你如果想把str="中文",以一定的编码方式变成存储时的数据(byte数组),就需要str.getBytes("encoding"),同理,你从文件或者其他地方读取到数据后,想转换成字符串,那么你就要知道他之前是用什么编码方式变成的数据,然后用new
String(bytes,
"encoding")
就可以了。

❻ JAVA编码转换问题

其实你的转换是可以的。但是系统显示以当前文件编码 为标准。所以看到不对文字。如果你转成文件编码形式肯定能显示的。 修改main方法 :如下

public static String code2code(String strIn, String sourceCode,
String targetCode) {
String strOut = null;
if (strIn == null || (strIn.trim()).equals(""))
return strIn;
try {
byte[] b = strIn.getBytes(sourceCode);
for (int i = 0; i < b.length; i++) {
System.out.print(b[i] + " ");
}
System.out.println(b.toString());
System.out
.println("--------------------------------------------------------");
strOut = new String(b, targetCode);
} catch (Exception e) {
e.printStackTrace();
return null;
}
return strOut;
}
public static void main(String[] args) {
// System.out.println(new Test().convertStringSms("公司业务"));
String s = "金";
System.out.println(s);
String text = code2code(s, "utf-8",System.getProperty("file.encoding"));
System.out.println(text);
//System.out.println(code2code(text, "UTF-8", "GBK"));
//System.out.println(System.getProperty("file.encoding"));
}

我本军团为你解答

❼ Java编码问题。

s1只是栈内存里的一个变量,是个地址,它指向你new出来的变量,存放在堆内存里,是gb2312的

❽ Java编码问题

f (条件表达式1){
} else{
// 这里语句执行的条件是 条件表达式1的结果是false
}
----------------------------------------------------------------------------

if(条件表达式2){
//如果条件表达式2为ture,下面的代码不会执行
}else if(条件表达式3){
// 条件表达式3是在条件表达式2为false时才会执行的判断
//如果条件表达式3为ture,下面的代码不会执行
}else if(条件表达式4){
// 条件表达式4是在条件表达式2和条件表达式4都为false时才会执行的判断
}

❾ JAVA 编码问题

反了吧,估计孙鑫用的是英文系统,不管他用的什么系统,从代码上看,反正他的默认编码是ISO-8859-1,你的默认编码是GBK,所以会不一样。
我这也是中文的试了下和你的输出是一样的。你可以换成英文环境试试,或者改变下自己的默认编码。

❿ java编码问题,GBK转化为UTF-8

首先理解java的字符概念
java中字符串是字符的序列,虚拟机内部的字符都是16位的unicode字符,等价于C++中的WCHAR,也是为了实现虚拟机方便

WCHAR叫做宽字符,对应的MuitiChar叫做多字符,这种多字符中字符的位数不唯一

GBK 和 UTF8 是多字符的不同编码形式

s=new String(s.getBytes("gbk"),"utf-8");
的意思是:
byte[] bytes=s.getBytes("gbk");
s=new String(bytes,"utf-8");

第一句是将s对应的gbk编码转出来,形成一个字节流
第二句是将这个字节流按照utf-8编码转为java字符串,因此相当于将gbk编码的字节流当做utf-8来使用,这样在中文中会出现乱码

你的问题是,接口返回的已经是utf-8 所以它必须是byte[] 流,如果是字符串的话就不好办了

阅读全文

与java编码问题相关的资料

热点内容
自己购买云主服务器推荐 浏览:419
个人所得税java 浏览:761
多余的服务器滑道还有什么用 浏览:189
pdf劈开合并 浏览:27
不能修改的pdf 浏览:750
同城公众源码 浏览:488
一个服务器2个端口怎么映射 浏览:297
java字符串ascii码 浏览:78
台湾云服务器怎么租服务器 浏览:475
旅游手机网站源码 浏览:332
android关联表 浏览:945
安卓导航无声音怎么维修 浏览:332
app怎么装视频 浏览:430
安卓系统下的软件怎么移到桌面 浏览:96
windows拷贝到linux 浏览:772
mdr软件解压和别人不一样 浏览:904
单片机串行通信有什么好处 浏览:340
游戏开发程序员书籍 浏览:860
pdf中图片修改 浏览:288
汇编编译后 浏览:491