2013-05-29 30 views
0

我有爲什麼mysql不能識別LONGTEXT dataype上的Unicode字符?

mysql>SHOW VARIABLES LIKE "%version%"; 

+-------------------------+-------------------------+ 
| Variable_name   | Value     | 
+-------------------------+-------------------------+ 
| innodb_version   | 5.5.31     | 
| protocol_version  | 10      | 
| slave_type_conversions |       | 
| version     | 5.5.31-0ubuntu0.12.10.1 | 
| version_comment   | (Ubuntu)    | 
| version_compile_machine | x86_64     | 
| version_compile_os  | debian-linux-gnu  | 
+-------------------------+-------------------------+ 

mysql> show variables like 'character%'; 

+--------------------------+----------------------------+ 
| Variable_name   | Value      | 
+--------------------------+----------------------------+ 
| character_set_client  | utf8      | 
| character_set_connection | utf8      | 
| character_set_database | utf8      | 
| character_set_filesystem | utf8      | 
| character_set_results | utf8      | 
| character_set_server  | utf8      | 
| character_set_system  | utf8      | 
| character_sets_dir  | /usr/share/mysql/charsets/ | 
+--------------------------+----------------------------+ 

數據庫MySQL數據庫,當我插入一個非拉丁語的VARCHAR,它工作正常但是當我嘗試插入的LONGTEXT鍵入它顯示我「? ?????」

我該如何解決這個問題。

我「米使用Java,休眠JSF 2.0 Spring框架

+0

你能證明你的表定義 – Farlan

+0

法蘭 - 是正確的;?首先設置d的字符集atabase,但表和列定義可能會覆蓋這些設置。整理(排序)也是依賴於字符的,並且改變排序規則甚至可以改變值的字符集!一個不錯的[博客](http://www.bluebox.net/about/blog/2009/07/mysql_encoding/) –

+0

你是否在LONGTEXT上使用getCharacterStream(一個Reader!)? getUnicodeStream已棄用。 –

回答

1

嘗試在初始化連接到數據庫後,運行此查詢:。

SET NAMES UTF8 
0

我沒有提到前面,我也有。SRING框架工作的解決辦法是在我的web.xml中添加此過濾器希望這幫助其他人

enter code here 


<filter> 
<filter-name>encoding-filter</filter-name> 
<filter-class> 
      org.springframework.web.filter.CharacterEncodingFilter 
    </filter-class> 
<init-param> 
    <param-name>encoding</param-name> 
<param-value>UTF-8</param-value> 
</init-param> 
</filter> 
<filter-mapping> 
<filter-name>encoding-filter</filter-name> 
<url-pattern>/*</url-pattern> 
</filter-mapping> 
相關問題