Java怎么存char字符到MySQL_java – 字符编码JDBC MySQL

我有一个多语言的Java应用程序,它可以在MySql数据库中获取和存储数据.

我把表格整理保留为utf-8-general-ci

对于JDBC连接,我使用useUnicode = true& characterEncoding = UTF-8参数.

像®这样的字符可以正常显示,但中文字符会混乱.

现在,

在添加JVM参数-Dfile.encoding = UTF8

显示中国的字符,但不喜欢®字符.

我该怎么做才能显示来自不同语言的所有字符.

编辑:

输入数据来自UDP数据包,由ByteBuffer上的get方法处理.

和像这样实现的getString方法.

public String getString() {

byte[] remainingBytes = new byte[this.byteBuffer.remaining()];

this.byteBuffer.slice().get(remainingBytes);

String dataString = new String(remainingBytes);

int stringEnd = dataString.indexOf(0);

if(stringEnd == -1) {

return null;

} else {

dataString = dataString.substring(0, stringEnd);

this.byteBuffer.position(this.byteBuffer.position() + dataString.getBytes().length + 1);

return dataString;

}

}

解决方法:

当你在MYSQL中直接尝试角色时,你说的是,只有当java把它放在那里时它才是错误的.

尝试让你的代码查找这些字符并将它们转储到文本文件中或者转到std进行简短的测试以比较文本std输出与发送到db的文本?

还值得存储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 Locale

现场

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”添加到

我也加入了

protocol="AJP/1.3" URIEncoding="UTF-8" />

3.2

在本地站点的web.xml中(在WEB-INF中)web.xml(不确定是否

这是必不可少的)

charsetFilter

filters.SetCharacterEncodingFilter

encoding

UTF-8

然后寻找映射并添加:

charsetFilter

/*

我遇到了一些特殊的字符损坏问题,值得在一个优秀的utf-8编辑器中打开保存和查看udp字符串(带有选项以启用utf-8的记事本)或kate或kde上的某些内容.

还可以测试不同的utf-8字符,这些字符可以正常工作,也可能通过std输出或文件无效

标签:java,mysql,character-encoding,jdbc

来源: https://codeday.me/bug/20190704/1374652.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值