成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

不同子系統(tǒng)采用不同MySQL編碼LATIN1和UTF8的兼容

crossea / 2388人閱讀

摘要:程序處理這是一個(gè)歷史遺留系統(tǒng)舊的系統(tǒng)是開(kāi)發(fā)的插入數(shù)據(jù)的時(shí)候沒(méi)有統(tǒng)一各個(gè)層次服務(wù)器數(shù)據(jù)庫(kù)表列的編碼這個(gè)情況基本上是的默認(rèn)安裝導(dǎo)致的實(shí)際的數(shù)據(jù)編碼為而采用開(kāi)發(fā)的新的系統(tǒng)需要和這個(gè)遺留系統(tǒng)公用數(shù)據(jù)庫(kù)采用的是編碼碰到的問(wèn)題是代碼中獲取到的中文為亂碼

程序處理

這是一個(gè)歷史遺留系統(tǒng), 舊的系統(tǒng)是C++開(kāi)發(fā)的, 插入數(shù)據(jù)的時(shí)候, 沒(méi)有統(tǒng)一MYSQL各個(gè)層次(服務(wù)器, 數(shù)據(jù)庫(kù), 表, 列)的編碼, 這個(gè)情況基本上是MYSQL的默認(rèn)安裝導(dǎo)致的, 實(shí)際的數(shù)據(jù)編碼為L(zhǎng)ATIN1, 而采用Java 開(kāi)發(fā)的新的系統(tǒng)需要和這個(gè)遺留系統(tǒng)公用數(shù)據(jù)庫(kù), 采用的是UTF8編碼, 碰到的問(wèn)題是Java代碼中獲取到的中文為亂碼.

搞清楚了這個(gè)問(wèn)題, Java中把亂碼轉(zhuǎn)換為正常顯示的UTF8編碼的中文很簡(jiǎn)單, 下面是轉(zhuǎn)換代碼

/**
 * LATIN1轉(zhuǎn)UTF8
 *
 * @param latin1 LATIN1(ISO_8859_1)字符串
 * @return UTF8字符串
 */
public String encodingConvert(String latin1) {
    return new String(
        latin1.getBytes(StandardCharsets.ISO_8859_1),
        StandardCharsets.UTF_8
    );
}

這是使用程序代碼的處理方式, 有的時(shí)候我們需要直接從SQL返回的結(jié)果集中直接拿到UTF8的數(shù)據(jù), 看下面

SQL內(nèi)置函數(shù)轉(zhuǎn)換

上面通過(guò)程序代碼可以處理字符集的轉(zhuǎn)換, 下面通過(guò)SQL的方式轉(zhuǎn)換

CONVERTCAST函數(shù): 首先需要把LATIN1的轉(zhuǎn)為BINARY, 然后再把BINARY轉(zhuǎn)為UTF8
SELECT
    USER.USERID AS USERID,
    USER.NICKNAME AS NICKNAME_LATIN1,
    CONVERT (
        CAST(
            CONVERT ( USER.NICKNAME USING latin1 ) AS BINARY 
        ) USING utf8 
    ) AS NICKNAME_UTF8 
FROM
    USER 
WHERE
    USERID = 15889;

其中 LATIN1_COLUMN 是LATIN1 編碼的字符集

最后, 我們可以把這樣的轉(zhuǎn)換做成一張視圖, 程序就不用再轉(zhuǎn)換了.

CREATE VIEW V_USER AS 
SELECT
    USER.USERID AS USERID,
    CONVERT (
        CAST(
            CONVERT ( USER.NICKNAME USING latin1 ) AS BINARY 
        ) USING utf8 
    ) AS NICKNAME
FROM
    USER;

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/72266.html

相關(guān)文章

  • MySql(二)——字符集比較規(guī)則

    摘要:二字符集和比較規(guī)則一些重要的字符集共收錄個(gè)字符,包括空格標(biāo)點(diǎn)符號(hào)數(shù)字大小寫(xiě)字母和一些不可見(jiàn)字符。這個(gè)字符集也有一個(gè)別名收錄漢字個(gè),其他文字符號(hào)個(gè)。 MySql(二)——字符集和比較規(guī)則 一些重要的字符集 ASCII 共收錄128個(gè)字符,包括空格、標(biāo)點(diǎn)符號(hào)、數(shù)字、大小寫(xiě)字母和一些不可見(jiàn)字符。由于總共才128個(gè)字符,所以可以使用1個(gè)字節(jié)來(lái)進(jìn)行編碼 ISO 8859-1 共收錄256...

    寵來(lái)也 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<