2014-09-18 77 views
-2

我最近將我的latin1數據庫轉換爲utf8。我所有的排序規則和連接屬性都設置爲utf8,我也使用& useUnicode作爲mysql驅動程序url。Java編碼,與數據庫的連接

問題是,因爲Java在utf16中存儲字符串,我是否需要做一些轉換,或者驅動程序是否將其從utf16轉換爲utf8進行連接,以及其他方式嗎? 我一般會問,但也適用於我們目前使用的spring jdbc。

編輯: 可以說用戶輸入任何類型的字符串,不管它是什麼編碼,它是一個swing JTextField。 Java接受它,將其轉換爲utf16並存儲它。如果我告訴我的jdbc驅動程序,我將發送的所有數據都已經是utf8,並且它不應該轉換,那麼這是如何工作的。 當然,我做了測試,它工作得很好,但爲什麼?

+2

你爲什麼不試試並告訴我們? :) – 2014-09-18 22:52:38

+0

這太好了,以至於......所以我最好問一下:) – JavaDesire 2014-09-18 22:57:23

+0

java不會在UTF-16中「存儲」字符串,它將字符作爲Unicode操作,內部表示形式無關緊要,您告訴它它如何將它們「存儲」在外部。您將其保留至您選擇的默認值。大多數人將它們作爲UTF-8在外部呈現。 – 2014-09-18 23:07:53

回答

0

utf16和utf8之間的轉換是雙向的。所以我不認爲你需要做任何轉換,只要你儘可能在java代碼中指定'read this as utf8'即可。如果你從數據庫中讀取一個原始字符串,你可能不需要指定,當你的數據庫檢測到編碼時,你的驅動程序/ ORM應該採取這種方式。