<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    小明思考

    Just a software engineer
    posts - 124, comments - 36, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    詭異的mysql latin1編碼

    Posted on 2012-02-24 14:54 小明 閱讀(1540) 評論(0)  編輯  收藏 所屬分類: 開發日志

    Mysql 的latin1 不等于標準的latin1(iso-8859-1) 和cp1252,比iso-8859-1多了0x80-0x9f字符,比cp1252多了0x81,0x8d,0x8f,0x90,0x9d 一共5個字符。

     

    http://dev.mysql.com/doc/refman/5.0/en/charset-we-sets.html

    latin1 is the default character set. MySQL's latin1 is the same as the Windows cp1252 character set. This means it is the same as the official ISO 8859-1 or IANA (Internet Assigned Numbers Authority) latin1, except that IANA latin1 treats the code points between 0x80 and 0x9f as “undefined,” whereas cp1252, and therefore MySQL's latin1, assign characters for those positions. For example, 0x80 is the Euro sign. For the “undefined” entries in cp1252, MySQL translates 0x81 to Unicode 0x0081, 0x8d to 0x008d, 0x8f to 0x008f, 0x90 to 0x0090, and 0x9d to 0x009d.

    這樣在Java中,如果使用標準的iso-8859-1或者cp1252解碼可能出現亂碼。
    s.getBytes("iso-8859-1") 或者 s.getBytes("cp1252");

    寫了一段代碼來解決這個問題
    private String convertCharset(String s){
            
    if(s!=null){
                
    try {
                    
    int length = s.length();
                    
    byte[] buffer = new byte[length];
                    
    //0x81 to Unicode 0x0081, 0x8d to 0x008d, 0x8f to 0x008f, 0x90 to 0x0090, and 0x9d to 0x009d.
                    for(int i=0;i<length;++i){
                        
    char c = s.charAt(i);
                        
    if(c==0x0081){
                            buffer[i]
    =(byte)0x81;
                        }
                        
    else if(c==0x008d){
                            buffer[i]
    =(byte)0x8d;
                        }
                        
    else if(c==0x008f){
                            buffer[i]
    =(byte)0x8f;
                        }
                        
    else if(c==0x0090){
                            buffer[i]
    =(byte)0x90;
                        }
                        
    else if(c==0x009d){
                            buffer[i]
    =(byte)0x9d;
                        }
                        
    else{
                            buffer[i] 
    = Character.toString(c).getBytes("cp1252")[0];
                        }
                    }
                    String result 
    = new String(buffer,"utf-8");
                    
    return result;
                } 
    catch (UnsupportedEncodingException e) {
                    logger.error(
    "charset convert error", e);
                }
            }
            
    return null;
        }
    主站蜘蛛池模板: 最近免费最新高清中文字幕韩国| 免费无毒a网站在线观看| 无码人妻一区二区三区免费看| 亚洲国产精品第一区二区三区| 成人精品国产亚洲欧洲| 国产美女精品久久久久久久免费 | 久久久久无码专区亚洲av| 狼色精品人妻在线视频免费| 亚洲国产综合精品中文字幕 | 久久精品免费一区二区| 亚洲免费视频播放| 女人被弄到高潮的免费视频| 亚洲精品动漫免费二区| 国产乱子伦精品免费无码专区| 老司机亚洲精品影院在线观看| 四虎永久免费影院在线| 一级全免费视频播放| 亚洲乱码中文字幕久久孕妇黑人| 成人久久免费网站| 亚洲国产视频一区| 日韩免费视频网站| 男女一边摸一边做爽的免费视频| 亚洲AV无码乱码在线观看裸奔| 亚洲三级高清免费| 爱情岛论坛亚洲品质自拍视频网站| 亚洲不卡AV影片在线播放| 成全动漫视频在线观看免费高清版下载| 亚洲第一精品在线视频| 成人特黄a级毛片免费视频| 另类小说亚洲色图| 亚洲成人在线电影| 国产国产成年年人免费看片| 国产免费久久精品丫丫| 亚洲校园春色小说| 亚洲精品乱码久久久久久不卡| 日本免费久久久久久久网站| 亚洲熟妇无码一区二区三区| 国产成人综合亚洲亚洲国产第一页| 最近免费最新高清中文字幕韩国| 国产尤物在线视精品在亚洲| 久久久久无码精品亚洲日韩|