本帖最后由 S2T11Enterprise 于 2009-09-21 09:35:03 编辑

解决方案 »

  1.   

    huming_h这是一个关于log4net的问题,忘高手指点.
      

  2.   

    <param name="Encoding" value="GB2312" /> 
    你不是说文本文件就没问题吗?写进去就是乱码,文本文件也是乱吗啊
    xml文件一般都是utf-8
    <?xml version="1.0" encoding="utf-8" ?>
      

  3.   

    因为log4net自己生成的文件里面并没有这个连个根都没有
    生成出来的全都是:
    <log4net_event logger="CY.UME.Web.Admin.Systems.SystemLogManager" timestamp="2009-09-21T09:42:41.2187500+08:00" level="FATAL" thread="2356" domain="550d0eeb-1-128979709573437500" username="LIUXP\Administrator">
      <log4net_message>???? Fatal ????</log4net_message>
      <log4net_properties>
        <log4net_data name="log4net:HostName" value="Liuxp" />
      </log4net_properties>
    </log4net_event>
    后来我手动加了一个根才能读出来,我也加了这句<?xml version="1.0" encoding="utf-8" ?>
    但是仍然没效果.我又把文件改了以后再插进去还是乱码,当然读出来也是.这就是我头痛的问题,困扰我2天了.
      

  4.   

    还有就是
    <param name="Encoding" value="GB2312" /> 
    这句话好像根本没有生效.
      

  5.   

    当然我也在网上搜了,都没有人提到这个问题,他们全都是用的txt来存储.
    也没有人去读出来看,都是直接打开看的.
      

  6.   

    我也碰到这个问题,看了源代码发现问题出在 Util\Transform.cs 文件 
    public static string MaskXmlInvalidCharacters ( string textData, string mask )
    这个函数上. 这个函数本意是将输出消息中的无效字符替换为"?".但是不幸的是这个正则写的有问题
    private static Regex INVALIDCHARS = new Regex ( @"[^\x09\x0A\x0D\x20-\xFF\u00FF-\u07FF\uE000-\uFFFD]", RegexOptions.Compiled );
    这个正则将很大一部分字符都替换掉了,其中就包含中文,还有日文韩文等.有个日本人又问这个问题,http://issues.apache.org/jira/browse/LOG4NET-229
    由于我确定我的消息中不会有无效字符.所以我直接把正则替换那句话注释掉了.然后重新编译生成,搞定.
    PS:如果引用新程序集有问题是因为原程序集进行了强签名,使用强签名生成就可以了.
      

  7.   

    我这儿有正确的方法:util\Transform.cs文件 193行正则表达式改为[?] 
    保存日志的XML文件头部<?xml version="1.0" encoding="utf-8">