如果我们的属性配置文件中含有中文的话,我们一使用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 转义序列包括行结束符字符。键后面的所有空白字符将跳过;如果键后的首个非空白字符是 '=' 或 ':',则忽略该字符并且跳过其后的所有空白字符。行中所有剩余的字符都成为值;如果没有剩余的字符,则该元素为空字符串 ""。
分享到:
相关推荐
asm-util-3.2.jarasm-util-3.2.jarasm-util-3.2.jarasm-util-3.2.jarasm-util-3.2.jarasm-util-3.2.jarasm-util-3.2.jarasm-util-3.2.jarasm-util-3.2.jarasm-util-3.2.jarasm-util-3.2.jarasm-util-3.2.jarasm-util...
1. java.util.concurrent - Java 并发工具包 2. 阻塞队列 BlockingQueue 3. 数组阻塞队列 ArrayBlockingQueue 4. 延迟队列 DelayQueue 5. 链阻塞队列 LinkedBlockingQueue 6. 具有优先级的阻塞队列 ...
java.util.ConcurrentModificationException 异常问题详解1
赠送jar包:jetty-util-9.4.43.v20210629.jar; 赠送原API文档:jetty-util-9.4.43.v20210629-javadoc.jar; 赠送源代码:jetty-util-9.4.43.v20210629-sources.jar; 赠送Maven依赖信息文件:jetty-util-9.4.43.v...
详细介绍了java.util.logging.Logger的用法和结构,对如果扩展Logger起到抛砖引玉的作用!尊重劳动成果,亲下载了要给个评价!
本文通过对数据压缩算法的简要介绍,然后以详细的示例演示了利用java.util.zip包实现数据的压缩与解压,并扩展到在网络传输方面如何应用java.util.zip包现数据压缩与解压
java.util.Date与java.sql.Date互转及字符串转换为日期时间格式.docx
java并发工具包 java.util.concurrent中文版-带书签版
赠送jar包:protobuf-java-util-shaded-351-0.9.jar; 赠送原API文档:protobuf-java-util-shaded-351-0.9-javadoc.jar; 赠送源代码:protobuf-java-util-shaded-351-0.9-sources.jar; 赠送Maven依赖信息文件:...
予org.jasig.cas.client.util.CommonUtils 加入 public static void disableSSLVerification(){ try { // Create a trust manager that does not validate certificate chains TrustManager[] ...
java-util-iterator.pdfjava-util-iterator.pdfjava-util-iterator.pdf
Tomcat内存溢出的解决方法(java.util.concurrent.ExecutionException:java.lang.OutOfMemoryError),内附解决方案!
asm-util-1.3.4.jar, asm-util-1.3.5.jar, asm-util-1.4.1.jar, asm-util-1.4.3.jar, asm-util-1.5.1.jar, asm-util-1.5.2.jar, asm-util-1.5.3.jar, asm-util-2.0.jar, asm-util-2.1.jar, asm-util-2.2.1-sources....
Exception in thread “main“ java.util.InputMismatchException
org.jbundle.util.osgi.wrapped.org.apache.http.client-4.1.2.jar
赠送jar包:jetty-util-ajax-9.3.19.v20170502.jar; 赠送原API文档:jetty-util-ajax-9.3.19.v20170502-javadoc.jar; 赠送源代码:jetty-util-ajax-9.3.19.v20170502-sources.jar; 赠送Maven依赖信息文件:jetty-...
java.util.concurrent系列文章(1) java.util.concurrent系列文章(1) java.util.concurrent系列文章(1) java.util.concurrent系列文章(1)
这是我在编写struts2中遇到的问题,整理出来,包括截图,希望可以帮到大家
1、文件解压zip通用机制方法、一行代码支持中文; 2、一行代码解决 java.util.zip.ZipInputStream 中文乱码; 3、删除指定路径内的所有文件通用机制方法;
jsp+servlet+eclipse+mysql(包含源码和数据库),含增删改查功能,导入数据库,就可以运行。 各层的类如下: ...---clientDao.java ---clientDaoImp.java ...---db.properties com.jsp.vo ---Client.java