您的位置:首页 > 编程语言 > Java开发

小议关于java字符编码的问题

2013-12-04 09:59 387 查看
 

对于初学者而言,字符编码是一个很“模糊”的概念,自己代码写得好好的,却显示在前端的时候出现了不知名的字符串,很是郁闷,这里我简单介绍一下自己的经验,如果我有什么不正确的地方,希望大家指出,相互学习
 
我以网页操作流程为例子说明
1.         首先,我们进入JSP页面,它已经指明了页面是以什么样的方式编码,例如GBK、ISO-8859-1、UTF-8等,将数据传送给server端
2.         其次,server端接受的数据也应该与前端对应起来,必须保持一致
3.         最后,将数据插入到数据库中,这里也需要数据库编码和字server端编码是一致的
总结:从前端----server端----数据库 这三者之间的编码必须保持一致,才能让不会出现乱码的现象
 
String bRet=new String(str.getBytes("gbk"),"utf-8");
备注:原来的字符串是gbk编码,但是出现乱码的问题,将其转为utf-8编码
 
 
package hb.code_change;

import java.io.UnsupportedEncodingException;

import org.junit.Test;

public class CodeChange {

public static String str = "[['20120522222139251',
'绋芥牳绯荤粺鐨勬ā鍧楄〃缁撴瀯.txt','.txt',900,100,-4,'']]";
@Test
public void test(){
/*byte[] byteTemp = str.getBytes("ISO-8859-1");
try {
String sRet = new String(byteTemp,"utf-8");
System.out.println(sRet);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}*/
try {
String bRet=new String(str.getBytes("gbk"),"utf-8");
System.out.println(bRet);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
/**************************************************************
* <p>功能:将UniCode码转换为Ascii码</p>
* <p>作者: </p>
* <p>最后更新:</p>
*
* @param sUniCode -输入的UniCode码字符串
* @return Ascii码字符串
*************************************************************/
public static String Un2Ascii(String sUniCode)
{
if(sUniCode == null)
return "";

String sRet = null;
try
{
byte[] byteTemp = sUniCode.getBytes();
sRet = new String(byteTemp,"ISO-8859-1");
return sRet;

}
catch(Exception ue)
{
System.out.println("Uni2Ascii:" + ue.getMessage());
return sRet;
}
}

@Test
public void testUn2Ascii(){
String result = Un2Ascii("%257B%2522pkId%2522%253A%2522");
System.out.println(result);
}

/****************************************************************
* <p>功能:将sAscII码转换为UniCode码
* <p>作者: </p>
* <p>最后更新:</p>
* @param sAscII -AscII码字符串
* @return UniCode码字符串
***************************************************************/
public String Ascii2Un(String sAscII)
{
if(sAscII==null)return "";
String sRet = null;
try
{
byte[] byteTemp = sAscII.getBytes("ISO-8859-1");
sRet = new String(byteTemp);
return sRet;

}
catch(Exception ue)
{
System.out.println("Ascii2Un:" + ue);
return sRet;
}
}

@Test
public void testAscii2Un(){
String result = Un2Ascii("%257B%2522pkId%2522%253A%2522");
System.out.println(result);
}

}

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: