由于某些奇怪的原因,我似乎无法将UTF-8数据添加到我的MySQL数据库中。输入非拉丁字符时,将其存储为?????。其他所有东西都存储良好。因此,例如,“
this is aexample®™”可以很好地存储,而“和英辞典”则存储为“ ????”。
连接网址很好:
private DataSource getDB() throws PropertyVetoException {
ComboPooledDataSource db = new ComboPooledDataSource();
db.setDriverClass("com.mysql.jdbc.Driver");
db.setJdbcUrl("jdbc:mysql://domain.com:3306/db?useUnicode=true&characterEncoding=UTF-8");
db.setUser("...");
db.setPassword("...");
return db;
}
正如您所料,我正在使用PreparedStatement,甚至有人尝试输入“ set names utf8”。
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
conn = db.getConnection();
stmt = conn.prepareStatement("set names utf8");
stmt.execute();
stmt = conn.prepareStatement("set character set utf8");
stmt.execute();
... set title...
stmt = conn.prepareStatement("INSERT INTO Table (title) VALUES (?)");
stmt.setString(1,title);
stmt.execute();
} catch (final SQLException e) {
...
该表本身似乎很好。
Default Character Set: utf8
Default Collation: utf8_general_ci
...
Field title:
Type text
Character Set: utf8
Collation: utf8_unicode_ci
我通过GUI编辑器输入Unicode(特别是“和英辞典”),然后从表中进行选择进行了测试,然后返回了很好的结果。因此,这似乎是JDBC的问题。
我想念什么?
在mysql服务器中有2个要检查的点,以便正确设置UTF-8字符集。
数据库级
这是通过创建它获得的:
CREATE DATABASE 'db' CHARACTER SET 'utf8';
表级
所有表也都必须使用UTF-8(对于您来说似乎是这种情况)
CREATE TABLE `Table1` (
[...]
) DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
重要的部分是 DEFAULT CHARSET = utf8 COLLATE = utf8_general_ci
最后,如果您的代码未正确处理utf8,则可以通过在启动时更改设置来强制JVM使用utf8编码:
java -Dfile.encoding=UTF-8 [...]
或更改环境变量
"**JAVA_TOOLS_OPTIONS**" to -Dfile.encoding="UTF-8"
或以编程方式使用:
System.setProperty("file.encoding" , "UTF-8");
(由于JVM在启动时会缓存默认字符编码的值,因此最后一个可能不会产生预期的效果)
希望能有所帮助。
我正在尝试用utf-8语言保存文本(希伯来语-阿拉伯语-等等)但它失败了。。首先,它给了我(???)所以我把它放在数据源中。groovy dbCreate=“update”url=“jdbc:mysql://localhost/db_name?useUnicode=yes 它给了我一个错误 错误。JDBCException记者-非法混合排序规则(latin1_swedish_ci,IMPLICIT
问题内容: 我有这个表格: 但是当我提交一个é字符时,它将变成é。 为什么不起作用?是的,MySQL数据库已正确设置了所有字符集。(数据库,表。)如果我使用Navicat手动将其放在数据库中,它会在网页上很好地显示。 另外,我尝试了元标记,设置了内容类型标头,但没有成功。 问题答案: 在您的HTML中,添加以下元标记: 还要在脚本顶部添加以下PHP标头: [编辑]: 另一个提示是将文件另存为编码。
问题内容: 我在Java中有以下代码行: 编写者不会编写UTF-8文件,因为当我在notepad ++中打开文件时,它表示编码为:ANSI作为UTF-8。我需要它是纯UTF-8。 你有什么建议吗? 问题答案: notepad ++(和任何其他工具)只能 猜测 编码,它不会写在文件(或某些元数据)的任何位置。 并且,如果您编写的文本不包含ASCII范围之外的任何字符(即,Unicode码点> 127
然后,我就可以查询该表并返回所需字符串。 连接是通过Tomcat的context.xml文件中的资源设置的,配置如下: 正如我所说的,我能够很好地读取字符串/字符,因此我假设表和连接设置都设置正确。 也都返回UTF-8。 感谢任何帮助。谢谢
示例代码(在REPL中): 输出: 问题是:它不是人类可读的。我的(聪明的)用户希望用JSON转储来验证甚至编辑文本文件(我宁愿不使用XML)。 有没有办法将对象序列化为UTF-8 JSON字符串(而不是)?
我试图让两个连字符触发短破折号,三个连字符触发长破折号;喜欢 除了工作。以下是我的收获: 这部作品(11部产生2111部产生3部) 这是同一个脚本,但“1”已被替换为“-”,“2”已被替换为“-”,而“3”已被替换为“-“--”-“应该生成”-“和“--”应该生成”-”,但它不起作用,因为我使用的版本中不完全支持Unicode(AutoHotKey.com上的AutoHotKey_L v1.1.0