Java使用UTF-8或GBK编码后还是乱码的问题

这篇具有很好参考价值的文章主要介绍了Java使用UTF-8或GBK编码后还是乱码的问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

大家在开发中可能经常遇到将String字符串转为byte[]的场景,为了避免中文乱码,一般指定字符集为GBK或UTF-8来进行编码以及解码,但是如果使用不当,同样会造成字符集乱码问题。
主要原因是进行编码以及解码的字符集不一致导致
所以,在解决字符集乱码问题时一般情况下会显示指定编码和解码字符集。

// 编码
byte[] bytes = “中文”.getBytes(“UTF-8”);
// 解码
new String(bytes,“UTF-8”);

不显式指定时一般会使用默认字符集进行编码或解码,此时需要确保使用的获取默认字符集的方法一样。

// 编码 获取默认字符集方法为:Charset.defaultCharset().name()
byte[] bytes =“中文”.getBytes();
// 解码 获取默认字符集方法为:Charset.defaultCharset().name()
new String(bytes);

以下列出两种获取默认字符集的方法及区别:

Charset.defaultCharset().name();
System.getProperty("file.encoding")

两者的区别是:

  • **Charset.defaultCharset()**通过在JVM启动时通过-Dfile.encoding=UTF-8参数来进行设置。此方式只支持在jvm启动时设置一次,不支持在运行期修改。

  • System.getProperty(“file.encoding”) 获取的是操作系统的编码,可以通过System.setProperty("file.encoding","UTF-8")进行修改(此修改不会影响操作系统,重启jvm后丢失),支持在运行期修改。文章来源地址https://www.toymoban.com/news/detail-556408.html

到了这里,关于Java使用UTF-8或GBK编码后还是乱码的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【错误记录】IntelliJ IDEA 中编译运行报错 ( 当前设置 GBK 编码 | 错误: 编码UTF-8的不可映射字�? )

    当前的 IntelliJ IDEA 设置的编码为 GBK 编码 , 选择 \\\" 菜单栏 / File / Settings \\\" 选项 , 在 \\\" File Encodings \\\" 中 , 查看 工程的编码 , 运行时报错 : 在中文注释的位置 , 编码报错 ; D:\\002_Project\\003_Java_WorkExsamplesrcmainjavaArrowCanvas.java:17 : 错误: 编码UTF-8的不可映射字�? // ����ֱ�� ^

    2024年02月14日
    浏览(37)
  • Python ZIpFile 解惑:GBK 编码与乱码现象

    项目 描述 维基百科 ZIP 格式 Python 官方文档 zipfile - 使用ZIP存档 搜索引擎 Google 、 Bing Zip 文件格式规范 APPNOTE.TXT 维基百科 首页 百度百科 首页 项目 描述 Python 3.10.6 操作系统 Windows 10 专业版(x86-64) 压缩软件 360压缩(4.0.0.1460) 本部分内容为铺垫内容,除 “乱码现象” 为必看

    2024年02月01日
    浏览(26)
  • UTF-8、GB2312、GBK、GB18030、ISO-8859-1(也称Latin-1):兼容ASCII编码

    ASCII码是单字节的,首位为0,后面表示的值就是Unicode码点,范围为0x00-0x7F,共表示128个字符。 UTF-8和ASCII兼容 :因为对于单字节的符号,UTF-8 编码和 ASCII 码是相同的, 所以 UTF-8 能兼容 ASCII 编码。 GB2312和ASCII兼容 :对于ASCII范围以内的字符,GB2312编码的机内码(不是区位码)

    2024年02月16日
    浏览(30)
  • Java 字符转码之UTF-8互转GBK

    Java UTF-8转GBK详解 java跟python类似的做法,在java中字符串的编码是java修改过的一种Unicode编码,所以看到java中的字符串,心理要默念这个东西是java修改过的一种Unicode编码的编码。  问题的关键是new String(xxx.getBytes(\\\"gbk\\\"), \\\"gbk\\\")这句话是什么意思,xxx.getBytes(\\\"gbk\\\")得到的数组编码是

    2024年02月05日
    浏览(30)
  • vscode默认gbk编码格式打开

    每次打开vscode都是utf-8格式打开文件,然后满屏的中文乱码,自己手动换成gbk编码 后中文显示正常,但是换多了很烦。 ctrl+shift+P 点 首选项:打开用户设置 加上这行在最后: 然后重启就好了

    2024年02月16日
    浏览(23)
  • 使用 C++ 方式实现 GBK 到 UTF-8 转码 (win / linux)

    C++ 存在多种方式实现 GBK 到 UTF-8 的转码 一般使用C++都会想到使用 Qt API QString 将 gbk 转为 utf-8 此种方式,可以转换 Windows 平台运行时的 gbk 编码的中文字符串为 utf-8 格式,linux 下需要使用 QTextCodec ,网上有很多,此处不做过多描述。 由于项目需要去掉 Qt 依赖,或者无法使用

    2024年02月09日
    浏览(34)
  • UTF-8转GBK

    参考链接:https://blog.csdn.net/yanchao7788/article/details/53196901 参考链接:你真的懂 Unicode 和 UTF-8 是什么关系吗?来看看这个就彻底懂了!_魔都飘雪的博客-CSDN博客_utf8和unicode的关系 UTF-8没办法直接转GBK,必须先转成unicode,再转成GBK 1.把UTF-8转成unicode,根据参考的链接,我做了实现

    2024年02月11日
    浏览(25)
  • 使用sublime发现没有gbk编码

    默认情况下,我们的 Sublime是没有 GBK编码格式设置了,为了我们的文件设置为 GBK,应当安装 GBK选项插件。 安装ConvertToUTF8插件 ①首选项--package control--Install Package ②弹出新的输入框输入:ConvertToUTF8,会出现ConvertToUTF8选项,选中安装即可。 ③安装成功后,重启sublime ④比较一

    2024年02月16日
    浏览(42)
  • UTF-8、UTF-16、Unicode、GB2312、GBK、GB18030一次说清楚

    1、关于存储编码和显示编码的区别。 Unicode是显示编码,UTF-8、UTF-16、GB2312、GBK、GB18030都是存储/传输方面使用,也叫做存储编码、处理编码,你在计算机上看见的所有文字都从存储编码转成显示编码后,显示出来,当你单机保存时又从显示编码转换为存储编码存储起来。 2、

    2024年02月12日
    浏览(36)
  • 解决终Linux端中文乱码问题及设置UTF-8编码

    简介 当在终端中复制粘贴中文文本时出现乱码问题,可能是因为终端未正确设置 UTF-8 编码。本文将介绍如何通过设置语言环境和字符类型环境,以及选择正确的语言包,来解决这一问题。 步骤: 1. 检查当前终端设置 在终端中运行以下命令,检查当前终端的语言环境和字符

    2024年02月05日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包