如果我们的属性配置文件中含有中文的话,我们一使用java.util.Properties直
接读取时会出乱码,现打开API读了一下,它是使用ISO
8859-1字符集编码来读取属性配置文件的,这样肯定会出乱码啊,这就解解释了为什么Struts中国际化文本中含有中文时,为什么要使用
native2ascii来把那些非ASCII字符转换成Unicode表示形式,如“提”转换后为 \u63d0 。以下是API说明部分:
When
saving properties to a stream or loading them from a stream, the ISO
8859-1 character encoding is used. For characters that cannot be
directly represented in this encoding, Unicode escapes are used;
however, only a single 'u' character is allowed in an escape sequence.
The native2ascii tool can be used to convert property files to and from
other character encodings.
下面是源码:
BufferedReader in = new BufferedReader(new InputStreamReader(inStream, "8859_1"));
public void load(InputStream inStream)需要注意的地方:
字符和字符串所用的字符转义序列的差别有:
—>不识别八进制转义。
—>字符序列 \b 不表示退格字符(根据下面的解释就是 b)
—>该方法并不将无效转义字符前的反斜杠字符 \ 视为错误;只是将反斜杠丢弃。例如,在 Java 字符串中,序列 "\z" 将导致编译时错误。相反,此方法会丢弃该反斜杠。因此,该方法将两字符序列 "\b" 与单字符 'b' 视为等同。
—>转义序列对于单引号和双引号而言不是必需的;但是根据上面的规则,前面有反斜杠的单引号和双引号字符仍旧分别生成单引号和双引号字符。
如果输入中出现了错误的 Unicode 转义序列,则抛出 IllegalArgumentException。
属性文件中是以自然行(而不是手写的 \r \n \r\n)为单位来处理的。一个自然行可能是一个空行、注释行或保存了键-元素对的某些部分。键与值只可能在一个自然行中出现,那么,如果键或值本身需要跨多行该怎么办?方法是用反斜杠字符 \ 转义行结束符序列(如手写 \r \n \r\n)。
仅包含空白字符的自然行认为是空行并被忽略。注释行以 ASCII 字符 '#' 或 '!' 作为其首个非空白字符;除了行结束符,此方法还将空格字符(' ','\u0020')、制表符('\t','\u0009')和换页符('\f','\u000C')作为空白,类中是这样定义的:whiteSpaceChars = " \t\r\n\f";
键是从首个非空白字符开始,直到(但不包括)首个非转义的 '='、 ':' 或非行结束符(\r\n)的空白字符(所以"a b"转成键值对"a=b"),但这些键终止字符都可能包含在键中,方法是在其前面用反斜杠字符进行转义,例如:\:\= 将是两字符的键 ":="。键可以使用 \r 和 \n 转义序列包括行结束符字符。键后面的所有空白字符将跳过;如果键后的首个非空白字符是 '=' 或 ':',则忽略该字符并且跳过其后的所有空白字符。行中所有剩余的字符都成为值;如果没有剩余的字符,则该元素为空字符串 ""。
分享到:
相关推荐
读取时,默认使用ISO 8859-1编码,这可能导致非ASCII字符的丢失。写入时,会使用`store()`方法,该方法会在每行末尾添加`\r\n`作为行结束符,即使原文件可能使用的是`\n`或`\r`。此外,特殊字符(如`#`、`!`和空格)...
当我们需要处理包含中文键的Properties文件时,可能会遇到编码问题,因为默认的ISO-8859-1编码无法正确表示中文字符。以下将详细介绍如何在Java中读取含中文key的Properties文件,并利用反射调用相关方法。 首先,...
例如,一个使用ISO-8859-1编码的.properties文件,在使用GBK编码进行解析时会出现乱码。解决方法: ```java // 使用指定编码读取文件 String content = new String(readFileToByteArray("path/to/file....
默认情况下,Java读取`properties`文件时采用ISO-8859-1编码,这不包括中文字符集。为了解决这个问题,我们需要做两方面的调整:文件编码和读取时的编码设置。 1. **文件编码**:将`properties`文件保存为UTF-8编码...
- **读取阶段**:在Java代码中加载.properties文件时,使用`java.util.Properties`类的`load(Reader reader)`方法,并传入一个使用UTF-8解码的`InputStreamReader`,如下所示: ```java Properties props = new ...
在Java编程中,处理配置文件通常是一个常见的任务,特别是.properties文件。这些文件用于存储应用程序的配置参数,便于管理和更改。本篇文章将详细讲解如何读取.properties文件,将其内容转化为Map对象,以及如何将...
使用`loadFromXML()`方法读取XML格式的`properties`文件,或者在`load()`方法中传递`InputStreamReader`,指定适当的字符集。 5. **默认值** 如果某个键对应的值不存在,`getProperty()`方法会返回`null`。为了...
### 如何使用Java读取properties文件内容 在Java开发中,`properties`文件是一种非常常见的配置文件格式,它主要用于存储程序的各种配置信息。通过这种方式,可以实现程序与配置的分离,便于维护和调整。本文将详细...
由于Java默认使用ISO-8859-1编码读取这些文件,因此在处理包含中文或其他非ASCII字符的文件时,需要进行特殊的编码转换,以免出现乱码。 PropEdit这款插件的出现,正是为了解决这个问题。它提供了一个直观的界面,...
在Java中,我们可以使用`java.util.Properties`类来读取和处理这类文件。该工具类可能包含以下功能: 1. 加载配置文件:通过`Properties.load(InputStream)`方法加载文件,通常在类路径下查找文件。 2. 获取属性值...
Properties 类继承自 Hashtable 类并且实现了 Map 接口,是使用一种键值对的形式来保存属性集,其中键和值都是字符串类型。Properties 类提供了 getProperty() 和 setProperty() 方法来操作属性文件,同时使用 load...
6. **转换文件编码**:如果项目原本基于其他编码,如GB18030,要转换为UTF-8,可以使用批量转换工具,如基于iconv的工具,仅转换.java源文件,保持其他类型文件的原始编码。同时,更新Eclipse中工程属性的`Text file...
4. **处理编码问题**:Properties文件默认使用ISO-8859-1编码,如果包含非ASCII字符,需要手动设置输入输出流的编码。 在提供的压缩包文件中,包含了几个Apache Commons库,这些库在处理XML和Properties文件时可能...
默认情况下,`Properties`类使用平台默认的字符集读写文件。如果需要自定义字符集,可以在`store`和`load`方法中传入编码名。 ```java p.store(new FileOutputStream("shawearn.properties"), "UTF-8 encoded", ...
`java.util.Properties`类提供了一种存储和加载配置信息的方式,这些信息通常以键值对的形式存在于属性文件中,如`config.properties`。通过`Properties`类,可以方便地读取和修改这些配置,例如: ```java ...
#### 1. Ext 类 (P.2) - **概述**:`Ext` 是 ExtJS 的核心命名空间,包含了全局的方法和属性。 - **用途**:提供了一个统一的入口来访问 ExtJS 库的功能,如创建组件、管理事件等。 - **常用方法**: - `Ext.create...
- **使用`java.util.Properties`类**:`Properties`类是专门用来处理属性文件的,它可以加载和保存键值对。首先创建`Properties`对象,然后加载文件,最后通过`getProperty`方法获取指定键的值。使用`...
在Java中,我们通常使用`.properties`文件来存储不同语言的文本资源。例如,`messages_en.properties`用于英语,`messages_zh_CN.properties`用于简体中文。这些文件包含键值对,键是不变的标识符,值是对应语言的...
- `Ext.util.JSON.encode(data)`:将数据编码为JSON字符串。 - `Ext.util.JSON.decode(json)`:从JSON字符串中解析出数据。 #### 十九、Ext.util.Format类(第20页) - **概述**:Ext.util.Format类提供了一组...
8. **属性文件**:使用`java.util.Properties`类可以读取和写入.properties文件,常用于存储配置信息。 9. **数据库操作**: - JDBC:Java Database Connectivity API是与数据库交互的基础,涉及连接、执行SQL、...