我正在使用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文件中都包含以下标记,以确保字符编码:
和
我检查了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 |