2013-05-29 34 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> 
相关问题