我正在开发JEE项目。我使用Glassfish服务器和MySQL数据库以及EJB组件。当我从服务器写入数据库英文字符时,一切都很完美(数据库中的所有字符都正确显示)。但是,如果我尝试从服务器写入数据库西里尔文(例如乌克兰符号),它们将在数据库中显示为问号(??????)。 (如果我在数据库中写一个西里尔字符手动,一切都正确显示)。我怎么能纠正这个?
答案 0 :(得分:0)
在这个过程中的某个时刻,正在使用错误的编码,很可能像ISO-8859-1那样不支持这些字符。
您需要检查链中的每个步骤(即数据库驱动程序,数据库,数据库服务器,网页编码等),以确定发生损坏的位置,然后更改该链接上的配置。
答案 1 :(得分:0)
可能您的MySQL数据库编码不正确。默认情况下,Java使用UTF,因此您可以尝试使用以下命令创建mysql数据库:
CREATE DATABASE `mydb` CHARACTER SET utf8 COLLATE utf8_general_ci;
对我来说它有所帮助。
答案 2 :(得分:0)
谢谢大家。我解决了这个问题。 在Ubuntu MySQL中安装了whith编码latin1。要从立即编码UTF-8的服务器启动,您需要编辑文件/ etc / mysql / my.cnf:
1) In the [mysqld] section, add the following lines:
skip-character-set-client-handshake
character-set-server = utf8
init-connect='SET NAMES utf8'
collation-server=utf8_general_ci
2) It is also desirable to set the encoding for the client and mysqldump. To do this in the sections [client] and [mysqldump] need to add the line:
default-character-set=utf8
3) Restart the server MySQL.
4) Enjoy :)