网站首页 文章专栏 议 java 在docker容器里的UTF-8的异想
这几天一直忙于公司生产环境服务的更新,没时间静下来,写东西,今天大早大来到公司,无聊,下午回老家,没心情工作,就闲下来想起来昨天遇到的JAVA乱码,
一种,JAVA 字符串序列化对象连接mysql 数据库 执行动作时,出现的乱码的问题,这时提醒一下,不是中文乱码, 这种情况可以在jdbc 连接时,这样写:
原来是这样写的 jdbc:mysql://127.0.0.1/dataname?useUnicode\=true&characterEncoding\=utf-8 改成下面示例 jdbc:mysql://127.0.0.1/dataname? useUnicode\=true&characterEncoding\=utf-8&zeroDateTimeBehavior\=convertToNull当然,这之前,数据库的编码 和数据表,数据表排序编码 ,数据库连接编码也都 要设置 utf8mb4 -- UTF-8 Unicode 排序:utf8mb4_unicode_ci
第二种,JAVA 在写文件时出现的乱码,这种情况大多数是和你的系统编码有关
你可以执行
root@ubuntu248:~# locale LANG=en_US.UTF-8 LANGUAGE= LC_CTYPE="en_US.UTF-8" LC_NUMERIC="en_US.UTF-8" LC_TIME="en_US.UTF-8" LC_COLLATE="en_US.UTF-8" LC_MONETARY="en_US.UTF-8" LC_MESSAGES="en_US.UTF-8" LC_PAPER="en_US.UTF-8" LC_NAME="en_US.UTF-8" LC_ADDRESS="en_US.UTF-8" LC_TELEPHONE="en_US.UTF-8" LC_MEASUREMENT="en_US.UTF-8" LC_IDENTIFICATION="en_US.UTF-8" LC_ALL=
如果系统编码如上是utf-8,那你就需要java 程序在执行时得到一个叫"JAVA_OPTS" 的系统变量,变量值如下:
[root@4ea159448878 /]# echo $JAVA_OPTS -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8这两种情况应该可以完美解决JAVA 乱码的情况
注:本人并非JAVA开发人员,如上面编写有误,请给我留言提醒,谢谢