以前存在,在DBeaver中添加汉字注释后,选择另存为后,注释的汉字出现乱码问题?
解决方法:在环境变量中添加JAVA_TOOL_OPTIONS选项,添加参数-Dfile.encoding=UTF-8 -Duser.language=en -Duser.country=US,这样JDK的提示就是英文的,系统输出的中文也能正常显示了,适用于Java/Scala程序,Python也有相似的环境变量PYTHONIOENCODING.
配合这里的修改后,基本不会再有乱码出现了。
下面说下为何会出现乱码问题?
首先,乱码问题,不是没法解决的 问题。你们不要恐慌。乱码问题是由于字符集不一样而产生的。
更专业点来讲就是:计算机编码(字符集)。计算机编码是计算机表明字母和数字的方式(计算机不认识咱们的文字语言。只认识0和1两个字符。这里就须要计算机编码转化为0和1。)这样咱们就不会为使用计算机而学习计算机底层的生涩的低级语言(如汇编),只须要熟悉简单的键盘输入,计算机本身就完成了信息从输入到输出,把结果呈现给咱们。
常见的编码方式有:ASCII编码,GB2312编码(简体中文),GBK,BIG5编码(繁体中文),ANSI编码,unicode,utf-8编码等
咱们来谈下,这些的由来。最先。计算机就美国那几个大学在用。美国人输入键盘上的字符就足够了。因此诞生了ASCII编码,并且那时候的磁盘很小。而ASCII编码只占用一个字节(8个二进制位)。后来,美国人要让全世界都用计算机。但是,每一个国家都有本身的文字。总不能全世界都用英语把。那样计算机的门槛那样高,你让不会英语的人事,怎么办?就有了后来的GBK,UTF-8等计算机编码。他们的产生,是的计算机能够把全世界绝大多数的语言文字都收录进去。才有了今天,中国人能够在计算机上输入中文。德国人能够输入德文。韩国人可使用韩文操做计算机。固然,这得益于硬盘存储空间的增大。如今的这些计算机编码占2个字节(16个二进制位)。
如今,说说为何会产生乱码?
因为计算机编码(字符集)的增多,你们可供选择的字符集就增多。全部形成了。各类软件和系统对计算机编码(字符集)的默认选择就不一样。这是乱码的本源。
由于不一样的发音在不一样的语言中有大相径庭的效果。一样适用于不一样的字符在不一样的计算机编码(字符集)下产生效果不同。
打个比方:英文的who 是谁的意思。中文的hu 是窗户的户。还有就是上海的简称(沪)。这个例子就说明白了。不一样字符在不一样字符集中的效果了吧。ide