mysql 字符串值不正确_mysql - java.sql.SQLException:字符串值不正确:'\ xF0 \ x9F \ x91 \ xBD \ xF0 \ x9F ...'...

我猜MySQL不相信这是有效的UTF8文本。 我尝试在具有相同列定义的测试表上插入(mysql客户端连接也是UTF8),虽然它执行了插入,但我使用MySQL CLI客户端以及JDBC检索的数据未正确检索值。 为了确保UTF8能够正常工作,我为奥巴马插入了“ö”而不是“o”:

johan@maiden:~$ mysql -vvv test < insert.sql

--------------

insert into utf8_test values(_utf8 "walmart öbama 👽💔")

--------------

Query OK, 1 row affected, 1 warning (0.12 sec)

johan@maiden:~$ file insert.sql

insert.sql: UTF-8 Unicode text

用于测试的小型Java应用程序:

package test.sql;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

public class Test

{

public static void main(String[] args)

{

System.out.println("test string=" + "walmart öbama 👽💔");

String url = "jdbc:mysql://hostname/test?useUnicode=true&characterEncoding=UTF-8";

try

{

Class.forName("com.mysql.jdbc.Driver").newInstance();

Connection c = DriverManager.getConnection(url, "username", "password");

PreparedStatement p = c.prepareStatement("select * from utf8_test");

p.execute();

ResultSet rs = p.getResultSet();

while (!rs.isLast())

{

rs.next();

String retrieved = rs.getString(1);

System.out.println("retrieved=\"" + retrieved + "\"");

}

}

catch (Exception e)

{

e.printStackTrace();

}

}

}

输出:

johan@appel:~/workspaces/java/javatest/bin$ java test.sql.Test

test string=walmart öbama 👽💔

retrieved="walmart öbama "

此外,我尝试使用JDBC连接进行相同的插入,并且它引发了相同的异常。我相信这是一个MySQL错误。 也许已经有关于这种情况的错误报告..

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值