当您直接在 MYSQL 中尝试该字符时,您声明它可以工作,只有当 java 将它放在那里时,它才不正确。
尝试让您的代码查找这些字符并将它们转储到文本文件或转储到 std 以进行简短测试以比较文本 std 输出与发送到 db 的内容?
还值得存储数据库事务以查看发送的内容:
就 mysql 配置而言,确保您的表和 mysql 本身以 utf-8 模式运行:
[client]
default-character-set=utf8
# This was formally known as [safe_mysqld]. Both versions are currently parsed.
[mysqld_safe]
default-character-set=utf8
default-collation=utf8_general_ci
character-set-server=utf8
collation-server=utf8_general_ci
init-connect='SET NAMES utf8'
[mysqld]
default-character-set=utf8
default-collation=utf8_general_ci
character-set-server=utf8
collation-server=utf8_general_ci
确保上面已为您在下面运行的每个数据库名称放入 /etc/mysql/my.cnf 以使其转储表并向每个表添加一条更改行以转换为 utf8
select CONCAT("Alter Table `", i.TABLE_NAME, "` CONVERT TO CHARACTER SET utf8;") as MySQLCMD from information_schema.TABLES i where i.TABLE_SCHEMA =
"userbase" INTO OUTFILE '/tmp/userbase.csv' ;
其他值得尝试的事情 - 特别是如果它在此服务器上以 utf-8 编写:
Linux系统环境:
Unix 语言环境
LANG=en_GB.UTF-8 LC_CTYPE="en_GB.UTF-8" LC_NUMERIC="en_GB.UTF-8" LC_TIME="en_GB.UTF-8" LC_COLLATE="en_GB.UTF-8" LC_MONETARY="en_GB.UTF- 8" LC_MESSAGES="en_GB.UTF-8" LC_PAPER="en_GB.UTF-8" LC_NAME="en_GB.UTF-8" LC_ADDRESS="en_GB.UTF-8" LC_TELEPHONE="en_GB.UTF-8" LC_MEASUREMENT=" en_GB.UTF-8" LC_IDENTIFICATION="en_GB.UTF-8" LC_ALL=
要解决这个问题
sudo dpkg-reconfigure locales select en_GB.UTF-8
update-locale LANG=en_GB.UTF-8
重新启动服务框以获取 utf-8 作为用户,您需要完全注销并重新登录并在重新启动之前检查语言环境以确保其正常工作。
这意味着您现在可以在本地 ssh 上输入日语(如果需要选择设置中的 putty utf-8)
- Tomcat:将 URIEncoding="UTF-8" 添加到
我还添加到
<Connector port="8009"......
protocol="AJP/1.3" URIEncoding="UTF-8" />
3.2 在本地站点的 web.xml 中(在 WEB-INF 内) web.xml(不确定这是否必要)
<web-app>
<filter>
<filter-name>charsetFilter</filter-name>
<filter-class>filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
然后寻找映射并添加:
<!-- Define filter mappings for the defined filters -->
<filter-mapping>
<filter-name>charsetFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
我遇到了值得在一个好的 utf-8 编辑器(notepad++ 带有启用 utf-8 的选项)或 kate 或 kde 上的其他东西中打开保存和查看 udp 字符串的特定字符损坏问题。
还可以通过 std out 或 file on 测试不同的 utf-8 字符,哪些可以工作,哪些可能不工作
http://www.fileformat.info/info/unicode/char/search.htm
并确保字符相同
http://www.fileformat.info/info/unicode/char/00ae/index.htm