日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

系统变量file.encoding对Java的运行影响有多大?(转)good

發(fā)布時間:2025/3/20 windows 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 系统变量file.encoding对Java的运行影响有多大?(转)good 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

這個話題來自: Nutz的issue 361

在考慮這個issue時, 我一直傾向于使用系統(tǒng)變量file.encoding來改變JVM的默認(rèn)編碼.

今天,我想到, 這個系統(tǒng)變量,對JVM的影響到底有多大呢? 我使用最簡單的方法看看這個變量的影響--在JDK 1.6.0_20的src.zip文件中,查找包含file.encoding字眼的文件. 共找到4個, 分別是: 先上重頭戲 java.nio.Charset類:

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; }

java.net.URLEncoder的靜態(tài)構(gòu)造方法,影響到的方法 java.net.URLEncoder.encode(String)

static { dontNeedEncoding = new BitSet(256); int i; for (i = 'a'; i < = 'z'; i++) { dontNeedEncoding.set(i); } for (i = 'A'; i <= 'Z'; i++) { dontNeedEncoding.set(i); } for (i = '0'; i <= '9'; i++) { dontNeedEncoding.set(i); } dontNeedEncoding.set(' '); /* encoding a space to a + is done * in the encode() method */ dontNeedEncoding.set('-'); dontNeedEncoding.set('_'); dontNeedEncoding.set('.'); dontNeedEncoding.set('*'); dfltEncName = (String)AccessController.doPrivileged ( new GetPropertyAction("file.encoding") ); }

com.sun.org.apache.xml.internal.serializer.Encoding的getMimeEncoding方法(209行起)

static String getMimeEncoding(String encoding) { if (null == encoding) { try { // Get the default system character encoding. This may be // incorrect if they passed in a writer, but right now there // seems to be no way to get the encoding from a writer. encoding = System.getProperty("file.encoding", "UTF8"); if (null != encoding) { /* * See if the mime type is equal to UTF8. If you don't * do that, then convertJava2MimeEncoding will convert * 8859_1 to "ISO-8859-1", which is not what we want, * I think, and I don't think I want to alter the tables * to convert everything to UTF-8. */ String jencoding = (encoding.equalsIgnoreCase("Cp1252") || encoding.equalsIgnoreCase("ISO8859_1") || encoding.equalsIgnoreCase("8859_1") || encoding.equalsIgnoreCase("UTF8")) ? DEFAULT_MIME_ENCODING : convertJava2MimeEncoding(encoding); encoding = (null != jencoding) ? jencoding : DEFAULT_MIME_ENCODING; } else { encoding = DEFAULT_MIME_ENCODING; } } catch (SecurityException se) { encoding = DEFAULT_MIME_ENCODING; } }

最后一個javax.print.DocFlavor類的靜態(tài)構(gòu)造方法:

static { hostEncoding = (String)java.security.AccessController.doPrivileged( new sun.security.action.GetPropertyAction("file.encoding")); }

可以看到,系統(tǒng)變量file.encoding影響到
1. Charset.defaultCharset() Java環(huán)境中最關(guān)鍵的編碼設(shè)置
2. URLEncoder.encode(String) Web環(huán)境中最常遇到的編碼使用
3. com.sun.org.apache.xml.internal.serializer.Encoding 影響對無編碼設(shè)置的xml文件的讀取
4. javax.print.DocFlavor 影響打印的編碼

故,影響還是很大的哦, 可以說是Java中編碼的一個關(guān)鍵鑰匙!
http://wendal.net/232.html


總結(jié)

以上是生活随笔為你收集整理的系统变量file.encoding对Java的运行影响有多大?(转)good的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。