`

深入理解String.getBytes()中编码问题

阅读更多
查看jdk的源码得知,String.getBytes()的源码如下:
public static Charset defaultCharset() {
        if (defaultCharset == null) {
    synchronized (Charset.class) {
java.security.PrivilegedAction pa =
    new GetPropertyAction("file.encoding");
String csn = (String)AccessController.doPrivileged(pa);
Charset cs = lookup(csn);
if (cs != null)
    defaultCharset = cs;
                else
    defaultCharset = forName("UTF-8");
            }
}
return defaultCharset;
    }


可知道: 1.首先获取JVM的默认编码,这个默认编码在java虚拟机启动的时候从操作系统里面的locale和charset获取
2. 如果获取不到默认的JVM默认编码,从字符串所在的文件的编码中获取

3.如果以上都获取不到,那么直接取UTF-8 编码


getBytes()默认使用的编码,是由Charset.defaultCharset()或者System.getProperty("file.encoding")参数决定的。
1、直接运行java的main函数可以证明。

2、但是为什么有些容器下,比如tomcat,解码用的不是操作系统编码,那是因为tomcat启动时,通过设置上面参数搞定的。在启动脚本里面设置file.encoding=UTF-8


分享到:
评论

相关推荐

    Java设置String字符串编码方法详解

    本文将深入探讨Java中设置String字符串编码的方法,帮助开发者更好地理解和使用这些功能。 首先,我们需要理解什么是字符编码。字符编码是将字符(如字母、数字和符号)与数字或二进制值关联的系统,例如ASCII、...

    关于Java+Web技术开发中中文乱码问题的深入探讨.pdf

    中文乱码问题在 Java Web 技术开发中的深入探讨 在 Java Web 技术开发中,中文乱码问题是一个常见的问题,影响了开发者的工作效率和项目的稳定性。本文将深入探讨中文乱码问题的成因、解决方法和预防措施,帮助...

    java_字符编码 Javajava_字符编码问题

    ### Java 字符编码详解 #### 一、Java 字符编码基础概念 在深入探讨 Java 字符编码的问题之前,我们先来了解一下字符编码的基本概念。...希望本文能帮助开发者们更好地理解和处理 Java 中的字符编码问题。

    Android手机端转换Ansi字符串,手机怎么转换为ansi编码,Delphi源码.rar

    在Android平台上,开发人员经常需要处理各种字符编码问题,特别是在与不同系统或设备交互时。Ansi编码,也称为Windows默认的ANSI编码(通常基于locale的代码页,如GBK或CP1252),在桌面应用中广泛使用,但在Android...

    java字符编码问题

    本文将深入探讨Java中的字符编码问题,并提供一些实用的解决方案。 #### 二、Java中的字符编码基础 Java本身采用的是Unicode编码系统,这是一种国际化的编码标准,能够支持世界上几乎所有语言的文字表示。Java中的...

    android GBK转换为String

    在Android开发中,字符编码...在实际开发中,确保正确处理字符编码至关重要,否则可能会出现乱码问题。合理地运用上述方法,能够帮助Android开发者在处理GBK编码数据时避免这类问题,从而提高应用的兼容性和用户体验。

    【IT十八掌徐培成】Java基础第09天-005.String-字符集编码.zip

    在Java基础教程中,徐培成老师的"Java基础第09天-005.String-字符集编码"主题深入探讨了这一主题,帮助初学者理解字符串(String)类与字符编码的关系。 首先,我们要知道什么是字符集。字符集是一系列用于表示文本的...

    Unicode转中文 Unicode字符串 转中文编码

    在实际开发中,可能需要处理来自不同编码源的数据,因此理解和掌握字符串与Unicode之间的转换至关重要。在C#中,`System.Text.Encoding`类提供了丰富的功能,支持多种字符编码的转换。 至于压缩包中的文件,如`...

    JAVA里字符编码的探索与理解.txt

    ### JAVA里字符编码的探索与理解 #### 一、引言 在计算机科学领域,字符编码是将人类可读的文本转换...通过本篇文章的学习,希望读者能够更加深入地理解JAVA中的字符编码机制,并能够在实际开发中灵活运用这些知识。

    JAVA中文编码的问题研究

    本文将深入探讨Java如何处理中文编码,以及在不同场景下可能出现的问题。 1. Java 字符编码基础 Java 采用Unicode编码作为其内部字符表示,Unicode是一种包含全球多数语言字符的编码标准。每个Unicode字符由一个...

    深入UTF8字符编码

    深入理解UTF-8字符编码是理解现代计算机系统中文本处理的关键。UTF-8是一种广泛使用的Unicode字符编码方式,它的全称是"8位Unicode Transformation Format"。在Java编程语言中,UTF-8更是默认的字符编码,对于处理...

    je22中乱码问题

    本文将深入探讨Java环境中出现乱码的原因及其解决方案,帮助读者彻底理解并解决这一常见问题。 #### 二、乱码产生的原因 乱码的根本原因是编码不一致导致的。当一个字符从一种编码格式被错误地解释为另一种编码...

    jsp中文问题的解决

    为了解决这类问题,我们需要对JSP应用中涉及到的所有环节进行深入分析。 #### 分析与解决步骤 ### 1. 确定系统环境 首先,明确开发和运行JSP应用程序的具体环境。这包括: - **操作系统**:确定操作系统的默认字符...

    常用中文编码显示及转换

    本文将深入探讨“常用中文编码显示及转换”的主题,包括汉字的页面编码、URL编码,以及在GBK和UTF-8之间的转换方法。同时,我们还将分析提供的源码文件,以了解其实现细节。 首先,我们要明白汉字的页面编码。页面...

    Android byte[] 和 String互相转换

    综上所述,理解和熟练掌握`byte[]`与`String`之间的转换,是Android开发中的一项基础技能,能帮助开发者处理各种数据交换和存储问题。在实际应用中,根据具体需求选择合适的转换方法和字符编码,是确保数据正确性和...

    utf8与string的相互转换

    首先,让我们深入理解UTF-8编码。UTF-8的特点是它使用1到4个字节来编码Unicode字符,其中ASCII字符(如英文字符)只需要一个字节。这种设计使得UTF-8与ASCII兼容,且在大多数情况下,可以更有效地处理文本,尤其是在...

    一文带你吃透Java中的String类.rar

    字符串常量池的概念是理解String类的关键。当创建一个字符串时,如果常量池中已经存在相同内容的字符串,那么新创建的字符串会直接引用已有的,这被称为字符串常量池的复用机制,有助于节省内存。 最后,关于Java的...

    android jni 中文字符传递demo

    通常,这会涉及到Java的`String.getBytes()`方法(使用特定的编码,如UTF-8)和C/C++中的`JNIEnv`接口来处理字节数组。 在Android开发环境中,Eclipse曾是广泛使用的IDE,尽管现在更多的是使用Android Studio,但这...

    解决下哉资源中文名问题DownLoadUtils

    在IT行业中,尤其是在...了解以上知识点后,你可以根据`DownLoadUtils.java`的源代码进行更深入的学习,理解它是如何处理中文文件名问题的,并将其应用到你的项目中,以确保在各种情况下都能正确处理中文资源的下载。

    解决中文乱码问题-java

    中文乱码问题的解决不仅涉及编码转换的具体操作,更需要开发者对字符编码有深入的理解,以及在项目中采用统一、合理的编码策略。遵循以上步骤和建议,可以有效避免和解决Java开发中常见的中文乱码问题,提升用户体验...

Global site tag (gtag.js) - Google Analytics