2015-07-19 85 views
0

我正在使用從webform向mySQL數據庫插入數據的web-app(JSP),數據以UTF8編碼的參數發送到servlet。在一定程度上,應用程序與普通字母和符號完美結合。但如果我試圖插入任何4字節字符,它將被問號(?)符號替換。將UTF8數據插入SJIS DB(MySQL)

我敢肯定這個問題有事情做與具有UTF8,因爲只有3個字節的MySQL的奇怪的方式,但這次整理是SJIS。

我必須俯視一些東西,所以我會很感激任何幫助,我一直在爲這一天將我的頭撞到牆上。

爲整理信息,我已經嘗試了多種不同的設置,結果都是一樣的,一切工作正常,除了4個字節的字符。

這是默認歸類:

SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' 
OR Variable_name LIKE 'collation%'; 

+--------------------------+-------------------+ 
| Variable_name   | Value    | 
+--------------------------+-------------------+ 
| character_set_client  | utf8    | 
| character_set_connection | utf8    | 
| character_set_database | sjis    | 
| character_set_filesystem | binary   | 
| character_set_results | utf8    | 
| character_set_server  | latin1   | 
| character_set_system  | utf8    | 
| collation_connection  | utf8_general_ci | 
| collation_database  | sjis_japanese_ci | 
| collation_server   | latin1_swedish_ci | 
+--------------------------+-------------------+ 

我還試圖與以下:

show FULL COLUMNS FROM XYZ; 
+--------+------------------+------------------+------+-----+---------+----- -----------+---------------------------------+---------+ 
| Field | Type    | Collation  | Null | Key | Default | Extra   | Privileges      | Comment | 
+--------+------------------+------------------+------+-----+---------+----- -----------+---------------------------------+---------+ 
| X  | int(10) unsigned | NULL    | NO | PRI | NULL | auto_increment | select,insert,update,references |   | 
| Y  | date    | NULL    | YES |  | NULL |    | select,insert,update,references |   | 
| Z  | varchar(255)  | sjis_japanese_ci | YES |  | NULL |    | select,insert,update,references |   | 
+--------+------------------+------------------+------+-----+---------+----------------+---------------------------------+---------+ 
:表我插入(Z列)

+--------------------------+------------------+ 
| Variable_name   | Value   | 
+--------------------------+------------------+ 
| character_set_client  | utf8    | 
| character_set_connection | utf8    | 
| character_set_database | sjis    | 
| character_set_filesystem | binary   | 
| character_set_results | utf8    | 
| character_set_server  | sjis    | 
| character_set_system  | utf8    | 
| collation_connection  | utf8_general_ci | 
| collation_database  | sjis_japanese_ci | 
| collation_server   | sjis_japanese_ci | 
+--------------------------+------------------+ 

示例內部JAVA級編碼

設置如下

request.setCharacterEncoding("UTF-8"); 
response.setCharacterEncoding("SHIFT_JIS"); 

我知道作爲以前進口的(LODA DATA INFILE)數據有這些字符,他們是可見的DB(未問號)DB可以保存這個字符。

左右的朋友,我問這個你的幫助,這可能是一件很容易的(或不可能的),如果你需要更多信息,我可以從DB /源得到它。 UTF8 4字節字符的

的例子是:(可能不是你的瀏覽器中可見)


或:) https://codepoints.net/U+1F4A9

非常感謝您!

回答

0

我已經試過絕對一切,使與SJIS這項工作,但沒能成功,我固定的改變所有表utf8mb4的情況。

ALTER TABLE xxx CONVERT TO CHARACTER SET utf8mb4; 

,並改變所有的方式編碼成UTF-8:

request.setCharacterEncoding("UTF-8"); 
response.setCharacterEncoding("UTF-8"); 

遠離從SJIS如果可能的話。