【问题标题】:unable to store hindi text in mysql using java无法使用 java 在 mysql 中存储印地语文本
【发布时间】:2016-09-18 21:28:39
【问题描述】:

我在 mysql 中将数据存储为 ¥à¤¨à¥ à¤à¤°à¤¨à¥ 。它在 localhost 中工作正常,但在远程 mysql(在 plesk 中)它不起作用。 我使用了以下内容:

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

在 servlet 和

con=DriverManager.getConnection("jdbc:mysql://localhost:3306/projectkkm?useUnicode=yes&characterEncoding=UTF-8","root","");

在数据库连接中

<%@page pageEncoding="UTF-8" %>

在jsp中

现在根据我的研究,我发现问题出在 Java 上。 java for linux 不支持印地语文本见 url:http://www.oracle.com/technetwork/java/javase/javase7locales-334809.html

see this snapshot from oracle

在我的 localhost (Windows) 中它工作正常,但是当我将它部署到 centos(linux) 平台时它不工作。 我认为问题可能在于window/linux兼容性。

谁能帮我解决这个问题。我确定问题不是来自 mysql 方面。

【问题讨论】:

  • 开始探索 mysql 编码/字符集/排序选项的伟大探索
  • 您确定请求对象是 UTF-8 编码的吗?转储标题并查看。还要检查任何字段的编码,它们的编码可能不同。
  • 什么是 MySQL 版本?
  • Mysql版本为5.6

标签: java mysql centos java-7 plesk


【解决方案1】:
  <Connector URIEncoding="utf-8" connectionTimeout="20000" port="8084" protocol="HTTP/1.1" redirectPort="8443"/>

在你的 tomcat apache 服务器配置文件中使用上面的代码

【讨论】:

    【解决方案2】:

    尝试添加,

    <filter>
        <filter-name>setCharacterEncodingFilter</filter-name>
        <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>setCharacterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    

    在 web.xml 中

    【讨论】:

    • 您使用哪个 Web 容器?我假设是tomcat,所以这个类文件是由容器提供的。如果容器不同,则库文件将特定于该容器。或者您应该包含包含此类的 jar。
    • 我正在使用 apache tomcat
    • 那么,jsp页面中是否缺少。对我来说,mysql 连接字符串是 useUnicode=true&characterEncoding=utf-8 。在你那里有“是”而不是“真的”
    • 在我的 localhost 窗口平台上它工作正常,但是当我将它部署到 centos(linux) 时它不工作
    【解决方案3】:

    似乎您的远程数据库配置不正确。

    SHOW VARIABLES LIKE 'char%';
    

    应该显示

    character_set_client      utf8                     
    character_set_connection   utf8               
    character_set_database      utf8                
    character_set_filesystem  binary                    
    character_set_results        utf8                        
    character_set_server         utf8                        
    character_set_system       utf8      
    

    如果不是,你应该修复 /etc/mysql/my.cnf

    在 [mysqld] 部分添加以下配置

    character-set-server = utf8
    init-connect='SET NAMES utf8'
    collation-server=utf8_general_ci
    

    放入 [client] 和 [mysqldump] 部分:

    default-character-set=utf8
    

    之后重启mysql

    【讨论】:

      猜你喜欢
      • 2023-03-27
      • 2012-07-20
      • 1970-01-01
      • 2023-03-14
      • 2019-05-06
      • 1970-01-01
      • 1970-01-01
      • 2014-03-25
      • 2013-07-26
      相关资源
      最近更新 更多