【发布时间】:2012-01-08 20:01:09
【问题描述】:
我正在使用 Ajax 调用在 MySQL 数据库中插入印度字符。我在应用程序流之间遇到 UTF-8 编码问题。
当我通过 JDBC 直接插入非英文字符(不使用 Ajax 调用)时,它会显示“????”在数据库中。
当我包括
response.setCharacterEncoding("UTF-8");
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
在我的 JSP 文件中,然后我在我的数据库中收到以下内容(问号而不是非英文字符):
??????????
当我不包含以上行时,它会在数据库中显示像这样的垃圾字符:
મà«?àª?પà«?ષà«?àª
而实际值是
મખપષ
所以实际问题在于通过JDBC jdbc连接器向JSP中的MySQL命令发送插入请求或之后。
我在所有 JSP 文件中都包含以下标签以确保字符编码:
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
和
<meta http-equiv="Content-Type" content="text/html; charset=utf-8;charset=UTF-8">
我检查了 MySQL 表是否启用了 Unicode,并且我能够通过终端正确输入非英文文本。
这个问题是怎么引起的,我该如何解决?
现在,我只能使用插入语句来编写......但是当我混合一些查询和插入语句时......我的应用程序返回以下错误: 非法混合排序规则 (latin1_swedish_ci,IMPLICIT) 和 (utf8_general_ci,COERCIBLE) 用于操作 '=' 以下是我的数据库变量:
| Variable_name | Value |
+--------------------------+----------------------------+
| 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 |
| character_sets_dir | /usr/share/mysql/charsets/ |
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
| completion_type | 0 |
| concurrent_insert | 1 |
| connect_timeout | 10 |
【问题讨论】:
-
我看到您添加了一个新的、完全不同的问题。请不要那样做。只需按下右上角的 按钮即可提出新问题。
-
谢谢...对不起,我认为它会保留上下文...
标签: java mysql jsp utf-8 character-encoding