Yog*_*ati 5 mysql spring hibernate spring-mvc utf-8
我们正在使用一个我们需要用语言保存数据的应用程序Gujarati.
Applcation中使用的技术如下所列.
我的JSP配置了
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
和
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
Hibernate配置是
<prop key="hibernate.connection.useUnicode">true</prop>
<prop key="hibernate.connection.characterEncoding">UTF-8</prop>
<prop key="hibernate.connection.charSet">UTF-8</prop>
MySQL URL是
jdbc:mysql://host:port/dbName?useUnicode=true&connectionCollation=utf8_general_ci&characterSetResults=utf8
Pojo有String字段来存储该数据.
MySQL具有VARCHAR使用charset = utf8和Collation = utf8_general_ci存储数据的数据类型 
当我试图保存任何非英语(古吉拉特语)字符时,它会显示一些垃圾字符,如àª?à«?àª?"ગુજ".
有没有我错过的其他配置.
在将" 泰米尔 "字符插入数据库时,我遇到了同样的问题.经过大量的冲浪,我得到了一个更好的工作解决方案,它解决了我的问题.我在这里与你分享我的解决方案.我希望它能帮助你清除您对非英语角色的疑虑.
INSERT INTO 
STUDENT(name,address) 
VALUES 
(N'?????', N'??????');
我正在使用一个示例,因为您没有提供任何表和字段名称的结构.
我假设你想要???(GA JA与元音签U)?
我想你以某种方式指定了"latin5".(是的,我发现你到处都有UTF-8,但是"latin5"是我能让事情发挥作用的唯一方法.)
CONVERT(CONVERT(UNHEX('C3A0C2AAC297C3A0C2ABC281C3A0C2AAC29C')
       USING utf8) USING latin5) = '???'
另外,你最终得到了"双重编码"; 我怀疑这是发生的事情:
SET NAMES latin5使用了,但它声称客户端有latin5编码而撒谎; 和CHARACTER SET utf8(好).如果可能的话,最好重新开始 - 清空表,确保SET NAMES utf8在从客户端连接到数据库时拥有或建立utf8.然后重新填充表格.
如果您希望尝试恢复现有数据,这可能会起作用:
UPDATE ... SET col = CONVERT(BINARY(CONVERT(
                         CONVERT(UNHEX(col) USING utf8)
                         USING latin5)) USING utf8);
但是您需要为每个表中的每个混乱列执行此操作.
对该代码进行部分测试即可
SELECT CONVERT(BINARY(CONVERT(
                         CONVERT(UNHEX(col) USING utf8)
                         USING latin5)) USING utf8)
     FROM table;
我说"部分测试",因为looking权利可能无法证明是is正确的.
之后UPDATE,SELECT HEX(col)获得E0AA97E0AB81E0AA9C的???.请注意,大多数 Gujarati十六进制应该是形式E0AAyy或E0AByy.您可能还会找到20一个空白区域.
我为不再确定而道歉.我已经解决了角色集问题十年了,但这是一个新的变种.
| 归档时间: | 
 | 
| 查看次数: | 1990 次 | 
| 最近记录: |