|
锁定老贴子 主题:用log4j發送EMAIL中文亂碼問題
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2005-11-15
我用log4j發送EMAIL時﹐mail中的中文會變成問號??
以下是我的log4j.properties配置﹐不知道怎樣設置編碼﹖ log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender log4j.appender.MAIL.Threshold=WARN log4j.appender.MAIL.BufferSize=1024 log4j.appender.MAIL.SMTPHost=www.mail.com log4j.appender.MAIL.Subject=出錯啦 log4j.appender.MAIL.From=from@mail.com log4j.appender.MAIL.To=to@mail.com log4j.appender.MAIL.layout=org.apache.log4j.HTMLLayout log4j.appender.MAIL.layout.LocationInfo=true 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2005-11-17
Pouyu 写道 我用log4j發送EMAIL時﹐mail中的中文會變成問號??
以下是我的log4j.properties配置﹐不知道怎樣設置編碼﹖ log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender log4j.appender.MAIL.Threshold=WARN log4j.appender.MAIL.BufferSize=1024 log4j.appender.MAIL.SMTPHost=www.mail.com log4j.appender.MAIL.Subject=出錯啦 log4j.appender.MAIL.From=from@mail.com log4j.appender.MAIL.To=to@mail.com log4j.appender.MAIL.layout=org.apache.log4j.HTMLLayout log4j.appender.MAIL.layout.LocationInfo=true 把中文换成Unicode编码 |
|
| 返回顶楼 | |
|
最后更新时间:2005-11-17
properties文件中只能存放ISO8859-1字符集中的字符, 存放中文是不能被读出的, 如果需要使用中文, 可以使用 native2ascii 命令处理 properties 文件.
|
|
| 返回顶楼 | |
|
最后更新时间:2005-11-18
Airate 写道 glassprogrammer 写道 properties文件中只能存放ISO8859-1字符集中的字符, 存放中文是不能被读出的, 如果需要使用中文, 可以使用 native2ascii 命令处理 properties 文件.
开玩笑 说明理由吧, 否则有搅局之嫌哦. 当然作为一个文本文件你往properties文件中放中文是没问题的, 不过要知道这种文件一般会使用java.util.Properties来读取, 看看javadoc : http://java.sun.com/j2se/1.4.2/docs/api/java/util/Properties.html, 引用 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
|
|
| 返回顶楼 | |
|
最后更新时间:2005-11-18
Airate 写道 诶,说啥呢 -_-#
好好想想,“只能”存放ISO8859-1字符集吗??? 一大堆的\WQ%T^\#@$^%&\ 那么好看? 很多种方法, 1。这个文件用utf-8编码,把jvm的encoding也设置成utf-8基本上就都没问题了,说“基本上”的原因在于常用字符没问题,那个很著名的 “联通”现象还是存在。 2。不改jvm也可以,读取这个文件的时候按照自己希望的encoding读进来不是也能实现嘛 除此以外还有很多方式,有时间翻javadoc,为什么就不能花点时间动脑筋去想想如何解决呢。 无语, 到此为止, 我不会再回了. 1.并非我不知道方法, 但是也需要遵循标准和惯例, javadoc里面已经说明Properties类会使用ISO8859-1编码来读取properties文件的, 请明确这个文件是供log4j来读取的, 不知道log4j知不知道 "jvm的encoding" 这个东东, 我想log4j会使用Properties类来读取log4j.properties文件; 2.我怀疑你没有用过native2ascii, 或者不知道在Ant里面也有这样的任务. 顺便看看 log4j 的源码: org.apache.log4j.PropertyConfigurator 引用 [code:1]public
void doConfigure(String configFileName, LoggerRepository hierarchy) { Properties props = new Properties(); try { FileInputStream istream = new FileInputStream(configFileName); props.load(istream); istream.close(); } catch (IOException e) { LogLog.error("Could not read configuration file ["+configFileName+"].", e); LogLog.error("Ignoring configuration file [" + configFileName+"]."); return; } // If we reach here, then the config file is alright. doConfigure(props, hierarchy); }[/code:1] |
|
| 返回顶楼 | |
|
最后更新时间:2005-11-22
首先感謝几位網友的回復。
我工作用的OS是BIG5的﹐所以JVM里的字符集MS950﹐并且由于一些原因還不能把JVM的字符集改為UTF-8。 如果是自己定義的message可以通過兩種方法解決﹕ 1. 用native2ascii轉換為unicode放properties文件里。但是不好看。 2. 通過自己來編碼﹐如下﹕ [code:1] Properties prop = new Properties(); prop.load(new FileInputStream("Message.properties")); byte[] bytes = prop.getProperty("subject").getBytes("ISO-8859-1"); String subject = new String(bytes, "big5"); [/code:1] 但我目前的問題是JVM自身出現的異常信息中的中文會變成??? 比如找不到Message.properties時﹐JVM會拋出FileNotFoundException﹐同時有一條message:系統找不到指定的檔案。這條message通過log4j發出來就變成????了. 我查閱了log4j的很多資料﹐好像無法從它來解決﹐似乎只能更改JVM的字符集了﹖ [/code] |
|
| 返回顶楼 | |
|
最后更新时间:2005-11-26
///1. 用native2ascii轉換為unicode放properties文件里。但是不好看。
仅仅是因为不好看就要这样瞎折腾,连改jvm的字符集的的烂办法都想出来??? 用xml作配置文件,p事都没有了. |
|
| 返回顶楼 | |
|
最后更新时间:2005-11-26
本来非常简单的事情,还扯上了动脑筋?????
java.util.Properties的源代码里写的很清楚: BufferedReader in = new BufferedReader(new InputStreamReader(inStream, "8859_1")); 照你意思,干嘛不直接改一下jdk的源代码呢??? Airate 写道 诶,说啥呢 -_-#
好好想想,“只能”存放ISO8859-1字符集吗??? 一大堆的\WQ%T^\#@$^%&\ 那么好看? 很多种方法, 1。这个文件用utf-8编码,把jvm的encoding也设置成utf-8基本上就都没问题了,说“基本上”的原因在于常用字符没问题,那个很著名的 “联通”现象还是存在。 2。不改jvm也可以,读取这个文件的时候按照自己希望的encoding读进来不是也能实现嘛 除此以外还有很多方式,有时间翻javadoc,为什么就不能花点时间动脑筋去想想如何解决呢。 |
|
| 返回顶楼 | |
|
最后更新时间:2005-12-23
服了某位同学了 典型的化简为繁自以为是......工作中碰到此类人事 我一般都绕道而行......
|
|
| 返回顶楼 | |
|
最后更新时间:2006-05-11
怎么不总结一下,虾客们
|
|
| 返回顶楼 | |








