【问题标题】:C# Mono - Encoding supportedC# Mono - 支持编码
【发布时间】:2015-10-31 20:21:14
【问题描述】:

我正在尝试在控制台中编写一个小程序,在 Windows 中效果很好,但是当我在 Ubuntu over Mono 项目中运行它时,即使我在良好的编码(iso -8859-1, UTF8, Unicode)

TextWriter tw = new StreamWriter(File.Open(@"C:\Temp\data.txt", FileMode.CreateNew), Encoding.GetEncoding("iso-8859-1"));
tw.WriteLine("éèçàôûêâ");
tw.Close(); 

那么 Mono for C# 支持什么编码?

【问题讨论】:

    标签: c# character-encoding mono


    【解决方案1】:

    我在 OS-X (mono-4.2.1) 和 Ubuntu 14.04 (mono 4.2.1) 上运行良好:

    编码方面,如果您正在查看 coreclr,那么:

    ENC ("ANSI_X3.4-1968", 20127 ),
    ENC ("ANSI_X3.4-1986", 20127 ),
    ENC ("ascii", 20127 ),
    ENC ("cp367", 20127 ),
    ENC ("cp819", 28591 ),
    ENC ("csASCII", 20127 ),
    ENC ("csISOLatin1", 28591 ),
    ENC ("csUnicode11UTF7", 65000 ),
    ENC ("IBM367", 20127 ),
    ENC ("ibm819", 28591 ),
    ENC ("ISO-10646-UCS-2", 1200 ),
    ENC ("iso-8859-1", 28591 ),
    ENC ("iso-ir-100", 28591 ),
    ENC ("iso-ir-6", 20127 ),
    ENC ("ISO646-US", 20127 ),
    ENC ("iso8859-1", 28591 ),
    ENC ("ISO_646.irv:1991", 20127 ),
    ENC ("iso_8859-1", 28591 ),
    ENC ("iso_8859-1:1987", 28591 ),
    ENC ("l1", 28591 ),
    ENC ("latin1", 28591 ),
    ENC ("ucs-2", 1200 ),
    ENC ("unicode", 1200), 
    ENC ("unicode-1-1-utf-7", 65000 ),
    ENC ("unicode-1-1-utf-8", 65001 ),
    ENC ("unicode-2-0-utf-7", 65000 ),
    ENC ("unicode-2-0-utf-8", 65001 ),
    ENC ("unicodeFFFE", 1201),
    ENC ("us", 20127 ),
    ENC ("us-ascii", 20127 ),
    ENC ("utf-16", 1200 ),
    ENC ("UTF-16BE", 1201), 
    ENC ("UTF-16LE", 1200),        
    ENC ("utf-32", 12000 ),
    ENC ("UTF-32BE", 12001 ),
    ENC ("UTF-32LE", 12000 ),
    ENC ("utf-7", 65000 ),
    ENC ("utf-8", 65001 ),
    ENC ("x-unicode-1-1-utf-7", 65000 ),
    ENC ("x-unicode-1-1-utf-8", 65001 ),
    ENC ("x-unicode-2-0-utf-7", 65000 ),
    ENC ("x-unicode-2-0-utf-8", 65001 )
    

    否则:

    ENC ("437", 437), 
    ENC ("ANSI_X3.4-1968", 20127), 
    ENC ("ANSI_X3.4-1986", 20127), 
    // ENC (L"_autodetect", 50932), 
    // ENC (L"_autodetect_all", 50001), 
    // ENC (L"_autodetect_kr", 50949), 
    ENC ("arabic", 28596), 
    ENC ("ascii", 20127), 
    ENC ("ASMO-708", 708), 
    ENC ("Big5", 950), 
    ENC ("Big5-HKSCS", 950), 
    ENC ("CCSID00858", 858), 
    ENC ("CCSID00924", 20924), 
    ENC ("CCSID01140", 1140), 
    ENC ("CCSID01141", 1141), 
    ENC ("CCSID01142", 1142), 
    ENC ("CCSID01143", 1143), 
    ENC ("CCSID01144", 1144), 
    ENC ("CCSID01145", 1145), 
    ENC ("CCSID01146", 1146), 
    ENC ("CCSID01147", 1147), 
    ENC ("CCSID01148", 1148), 
    ENC ("CCSID01149", 1149), 
    ENC ("chinese", 936), 
    ENC ("cn-big5", 950), 
    ENC ("CN-GB", 936), 
    ENC ("CP00858", 858), 
    ENC ("CP00924", 20924), 
    ENC ("CP01140", 1140), 
    ENC ("CP01141", 1141), 
    ENC ("CP01142", 1142), 
    ENC ("CP01143", 1143), 
    ENC ("CP01144", 1144), 
    ENC ("CP01145", 1145), 
    ENC ("CP01146", 1146), 
    ENC ("CP01147", 1147), 
    ENC ("CP01148", 1148), 
    ENC ("CP01149", 1149), 
    ENC ("cp037", 37), 
    ENC ("cp1025", 21025), 
    ENC ("CP1026", 1026), 
    ENC ("cp1256", 1256), 
    ENC ("CP273", 20273), 
    ENC ("CP278", 20278), 
    ENC ("CP280", 20280), 
    ENC ("CP284", 20284), 
    ENC ("CP285", 20285), 
    ENC ("cp290", 20290), 
    ENC ("cp297", 20297), 
    ENC ("cp367", 20127), 
    ENC ("cp420", 20420), 
    ENC ("cp423", 20423), 
    ENC ("cp424", 20424), 
    ENC ("cp437", 437), 
    ENC ("CP500", 500), 
    ENC ("cp50227", 50227), 
        //ENC (L"cp50229", 50229), 
    ENC ("cp819", 28591), 
    ENC ("cp850", 850), 
    ENC ("cp852", 852), 
    ENC ("cp855", 855), 
    ENC ("cp857", 857), 
    ENC ("cp858", 858), 
    ENC ("cp860", 860), 
    ENC ("cp861", 861), 
    ENC ("cp862", 862), 
    ENC ("cp863", 863), 
    ENC ("cp864", 864), 
    ENC ("cp865", 865), 
    ENC ("cp866", 866), 
    ENC ("cp869", 869), 
    ENC ("CP870", 870), 
    ENC ("CP871", 20871), 
    ENC ("cp875", 875), 
    ENC ("cp880", 20880), 
    ENC ("CP905", 20905), 
    //ENC (L"cp930", 50930), 
    //ENC (L"cp933", 50933), 
    //ENC (L"cp935", 50935), 
    //ENC (L"cp937", 50937), 
    //ENC (L"cp939", 50939), 
    ENC ("csASCII", 20127), 
    ENC ("csbig5", 950), 
    ENC ("csEUCKR", 51949), 
    ENC ("csEUCPkdFmtJapanese", 51932), 
    ENC ("csGB2312", 936), 
    ENC ("csGB231280", 936), 
    ENC ("csIBM037", 37), 
    ENC ("csIBM1026", 1026), 
    ENC ("csIBM273", 20273), 
    ENC ("csIBM277", 20277), 
    ENC ("csIBM278", 20278), 
    ENC ("csIBM280", 20280), 
    ENC ("csIBM284", 20284), 
    ENC ("csIBM285", 20285), 
    ENC ("csIBM290", 20290), 
    ENC ("csIBM297", 20297), 
    ENC ("csIBM420", 20420), 
    ENC ("csIBM423", 20423), 
    ENC ("csIBM424", 20424), 
    ENC ("csIBM500", 500), 
    ENC ("csIBM870", 870), 
    ENC ("csIBM871", 20871), 
    ENC ("csIBM880", 20880), 
    ENC ("csIBM905", 20905), 
    ENC ("csIBMThai", 20838), 
    ENC ("csISO2022JP", 50221), 
    ENC ("csISO2022KR", 50225), 
    ENC ("csISO58GB231280", 936), 
    ENC ("csISOLatin1", 28591), 
    ENC ("csISOLatin2", 28592), 
    ENC ("csISOLatin3", 28593), 
    ENC ("csISOLatin4", 28594), 
    ENC ("csISOLatin5", 28599), 
    ENC ("csISOLatin9", 28605), 
    ENC ("csISOLatinArabic", 28596), 
    ENC ("csISOLatinCyrillic", 28595), 
    ENC ("csISOLatinGreek", 28597), 
    ENC ("csISOLatinHebrew", 28598), 
    ENC ("csKOI8R", 20866), 
    ENC ("csKSC56011987", 949), 
    ENC ("csPC8CodePage437", 437), 
    ENC ("csShiftJIS", 932), 
    ENC ("csUnicode11UTF7", 65000), 
    ENC ("csWindows31J", 932), 
    ENC ("cyrillic", 28595), 
    ENC ("DIN_66003", 20106), 
    ENC ("DOS-720", 720), 
    ENC ("DOS-862", 862), 
    ENC ("DOS-874", 874), 
    ENC ("ebcdic-cp-ar1", 20420), 
    ENC ("ebcdic-cp-be", 500), 
    ENC ("ebcdic-cp-ca", 37), 
    ENC ("ebcdic-cp-ch", 500), 
    ENC ("EBCDIC-CP-DK", 20277), 
    ENC ("ebcdic-cp-es", 20284), 
    ENC ("ebcdic-cp-fi", 20278), 
    ENC ("ebcdic-cp-fr", 20297), 
    ENC ("ebcdic-cp-gb", 20285), 
    ENC ("ebcdic-cp-gr", 20423), 
    ENC ("ebcdic-cp-he", 20424), 
    ENC ("ebcdic-cp-is", 20871), 
    ENC ("ebcdic-cp-it", 20280), 
    ENC ("ebcdic-cp-nl", 37), 
    ENC ("EBCDIC-CP-NO", 20277), 
    ENC ("ebcdic-cp-roece", 870), 
    ENC ("ebcdic-cp-se", 20278), 
    ENC ("ebcdic-cp-tr", 20905), 
    ENC ("ebcdic-cp-us", 37), 
    ENC ("ebcdic-cp-wt", 37), 
    ENC ("ebcdic-cp-yu", 870), 
    ENC ("EBCDIC-Cyrillic", 20880), 
    ENC ("ebcdic-de-273+euro", 1141), 
    ENC ("ebcdic-dk-277+euro", 1142), 
    ENC ("ebcdic-es-284+euro", 1145), 
    ENC ("ebcdic-fi-278+euro", 1143), 
    ENC ("ebcdic-fr-297+euro", 1147), 
    ENC ("ebcdic-gb-285+euro", 1146), 
    ENC ("ebcdic-international-500+euro", 1148), 
    ENC ("ebcdic-is-871+euro", 1149), 
    ENC ("ebcdic-it-280+euro", 1144), 
    ENC ("EBCDIC-JP-kana", 20290), 
    ENC ("ebcdic-Latin9--euro", 20924), 
    ENC ("ebcdic-no-277+euro", 1142), 
    ENC ("ebcdic-se-278+euro", 1143), 
    ENC ("ebcdic-us-37+euro", 1140), 
    ENC ("ECMA-114", 28596), 
    ENC ("ECMA-118", 28597), 
    ENC ("ELOT_928", 28597), 
    ENC ("euc-cn", 51936), 
    ENC ("euc-jp", 51932), 
    ENC ("euc-kr", 51949), 
    ENC ("Extended_UNIX_Code_Packed_Format_for_Japanese", 51932), 
    ENC ("GB18030", 54936), 
    ENC ("GB2312", 936), 
    ENC ("GB2312-80", 936), 
    ENC ("GB231280", 936), 
    ENC ("GBK", 936), 
    ENC ("GB_2312-80", 936), 
    ENC ("German", 20106), 
    ENC ("greek", 28597), 
    ENC ("greek8", 28597), 
    ENC ("hebrew", 28598), 
    ENC ("hz-gb-2312", 52936), 
    ENC ("IBM-Thai", 20838), 
    ENC ("IBM00858", 858), 
    ENC ("IBM00924", 20924), 
    ENC ("IBM01047", 1047), 
    ENC ("IBM01140", 1140), 
    ENC ("IBM01141", 1141), 
    ENC ("IBM01142", 1142), 
    ENC ("IBM01143", 1143), 
    ENC ("IBM01144", 1144), 
    ENC ("IBM01145", 1145), 
    ENC ("IBM01146", 1146), 
    ENC ("IBM01147", 1147), 
    ENC ("IBM01148", 1148), 
    ENC ("IBM01149", 1149), 
    ENC ("IBM037", 37), 
    ENC ("IBM1026", 1026), 
    ENC ("IBM273", 20273), 
    ENC ("IBM277", 20277), 
    ENC ("IBM278", 20278), 
    ENC ("IBM280", 20280), 
    ENC ("IBM284", 20284), 
    ENC ("IBM285", 20285), 
    ENC ("IBM290", 20290), 
    ENC ("IBM297", 20297), 
    ENC ("IBM367", 20127), 
    ENC ("IBM420", 20420), 
    ENC ("IBM423", 20423), 
    ENC ("IBM424", 20424), 
    ENC ("IBM437", 437), 
    ENC ("IBM500", 500), 
    ENC ("ibm737", 737), 
    ENC ("ibm775", 775), 
    ENC ("ibm819", 28591), 
    ENC ("IBM850", 850), 
    ENC ("IBM852", 852), 
    ENC ("IBM855", 855), 
    ENC ("IBM857", 857), 
    ENC ("IBM860", 860), 
    ENC ("IBM861", 861), 
    ENC ("IBM862", 862), 
    ENC ("IBM863", 863), 
    ENC ("IBM864", 864), 
    ENC ("IBM865", 865), 
    ENC ("IBM866", 866), 
    ENC ("IBM869", 869), 
    ENC ("IBM870", 870), 
    ENC ("IBM871", 20871), 
    ENC ("IBM880", 20880), 
    ENC ("IBM905", 20905), 
    ENC ("irv", 20105), 
    ENC ("ISO-10646-UCS-2", 1200), 
    ENC ("iso-2022-jp", 50220), 
    ENC ("iso-2022-jpeuc", 51932), 
    ENC ("iso-2022-kr", 50225), 
    ENC ("iso-2022-kr-7", 50225), 
    ENC ("iso-2022-kr-7bit", 50225), 
    ENC ("iso-2022-kr-8", 51949), 
    ENC ("iso-2022-kr-8bit", 51949), 
    ENC ("iso-8859-1", 28591), 
    ENC ("iso-8859-11", 874), 
    ENC ("iso-8859-13", 28603), 
    ENC ("iso-8859-15", 28605), 
    ENC ("iso-8859-2", 28592), 
    ENC ("iso-8859-3", 28593), 
    ENC ("iso-8859-4", 28594), 
    ENC ("iso-8859-5", 28595), 
    ENC ("iso-8859-6", 28596), 
    ENC ("iso-8859-7", 28597), 
    ENC ("iso-8859-8", 28598), 
    ENC ("ISO-8859-8 Visual", 28598), 
    ENC ("iso-8859-8-i", 38598), 
    ENC ("iso-8859-9", 28599), 
    ENC ("iso-ir-100", 28591), 
    ENC ("iso-ir-101", 28592), 
    ENC ("iso-ir-109", 28593), 
    ENC ("iso-ir-110", 28594), 
    ENC ("iso-ir-126", 28597), 
    ENC ("iso-ir-127", 28596), 
    ENC ("iso-ir-138", 28598), 
    ENC ("iso-ir-144", 28595), 
    ENC ("iso-ir-148", 28599), 
    ENC ("iso-ir-149", 949), 
    ENC ("iso-ir-58", 936), 
    ENC ("iso-ir-6", 20127), 
    ENC ("ISO646-US", 20127), 
    ENC ("iso8859-1", 28591), 
    ENC ("iso8859-2", 28592), 
    ENC ("ISO_646.irv:1991", 20127), 
    ENC ("iso_8859-1", 28591), 
    ENC ("ISO_8859-15", 28605), 
    ENC ("iso_8859-1:1987", 28591), 
    ENC ("iso_8859-2", 28592), 
    ENC ("iso_8859-2:1987", 28592), 
    ENC ("ISO_8859-3", 28593), 
    ENC ("ISO_8859-3:1988", 28593), 
    ENC ("ISO_8859-4", 28594), 
    ENC ("ISO_8859-4:1988", 28594), 
    ENC ("ISO_8859-5", 28595), 
    ENC ("ISO_8859-5:1988", 28595), 
    ENC ("ISO_8859-6", 28596), 
    ENC ("ISO_8859-6:1987", 28596), 
    ENC ("ISO_8859-7", 28597), 
    ENC ("ISO_8859-7:1987", 28597), 
    ENC ("ISO_8859-8", 28598), 
    ENC ("ISO_8859-8:1988", 28598), 
    ENC ("ISO_8859-9", 28599), 
    ENC ("ISO_8859-9:1989", 28599), 
    ENC ("Johab", 1361), 
    ENC ("koi", 20866), 
    ENC ("koi8", 20866), 
    ENC ("koi8-r", 20866), 
    ENC ("koi8-ru", 21866), 
    ENC ("koi8-u", 21866), 
    ENC ("koi8r", 20866), 
    ENC ("korean", 949), 
    ENC ("ks-c-5601", 949), 
    ENC ("ks-c5601", 949), 
    ENC ("KSC5601", 949), 
    ENC ("KSC_5601", 949), 
    ENC ("ks_c_5601", 949), 
    ENC ("ks_c_5601-1987", 949), 
    ENC ("ks_c_5601-1989", 949), 
    ENC ("ks_c_5601_1987", 949), 
    ENC ("l1", 28591), 
    ENC ("l2", 28592), 
    ENC ("l3", 28593), 
    ENC ("l4", 28594), 
    ENC ("l5", 28599), 
    ENC ("l9", 28605), 
    ENC ("latin1", 28591), 
    ENC ("latin2", 28592), 
    ENC ("latin3", 28593), 
    ENC ("latin4", 28594), 
    ENC ("latin5", 28599), 
    ENC ("latin9", 28605), 
    ENC ("logical", 28598), 
    ENC ("macintosh", 10000), 
    ENC ("ms_Kanji", 932), 
    ENC ("Norwegian", 20108), 
    ENC ("NS_4551-1", 20108), 
    ENC ("PC-Multilingual-850+euro", 858), 
    ENC ("SEN_850200_B", 20107), 
    ENC ("shift-jis", 932), 
    ENC ("shift_jis", 932), 
    ENC ("sjis", 932), 
    ENC ("Swedish", 20107), 
    ENC ("TIS-620", 874), 
    ENC ("ucs-2", 1200), 
    ENC ("unicode", 1200), 
    ENC ("unicode-1-1-utf-7", 65000), 
    ENC ("unicode-1-1-utf-8", 65001), 
    ENC ("unicode-2-0-utf-7", 65000), 
    ENC ("unicode-2-0-utf-8", 65001), 
    ENC ("unicodeFFFE", 1201),
    ENC ("us", 20127), 
    ENC ("us-ascii", 20127), 
    ENC ("utf-16", 1200), 
    ENC ("UTF-16BE", 1201), 
    ENC ("UTF-16LE", 1200),
    ENC ("utf-32", 12000),
    ENC ("UTF-32BE", 12001),
    ENC ("UTF-32LE", 12000),
    ENC ("utf-7", 65000), 
    ENC ("utf-8", 65001),
    ENC ("visual", 28598), 
    ENC ("windows-1250", 1250), 
    ENC ("windows-1251", 1251), 
    ENC ("windows-1252", 1252), 
    ENC ("windows-1253", 1253), 
    ENC ("Windows-1254", 1254), 
    ENC ("windows-1255", 1255), 
    ENC ("windows-1256", 1256), 
    ENC ("windows-1257", 1257), 
    ENC ("windows-1258", 1258), 
    ENC ("windows-874", 874), 
    ENC ("x-ansi", 1252), 
    ENC ("x-Chinese-CNS", 20000), 
    ENC ("x-Chinese-Eten", 20002), 
    ENC ("x-cp1250", 1250), 
    ENC ("x-cp1251", 1251), 
    ENC ("x-cp20001", 20001), 
    ENC ("x-cp20003", 20003), 
    ENC ("x-cp20004", 20004), 
    ENC ("x-cp20005", 20005), 
    ENC ("x-cp20261", 20261), 
    ENC ("x-cp20269", 20269), 
    ENC ("x-cp20936", 20936), 
    ENC ("x-cp20949", 20949),
    ENC ("x-cp50227", 50227), 
    //ENC (L"x-cp50229", 50229), 
    //ENC (L"X-EBCDIC-JapaneseAndUSCanada", 50931), 
    ENC ("X-EBCDIC-KoreanExtended", 20833), 
    ENC ("x-euc", 51932), 
    ENC ("x-euc-cn", 51936), 
    ENC ("x-euc-jp", 51932), 
    ENC ("x-Europa", 29001), 
    ENC ("x-IA5", 20105), 
    ENC ("x-IA5-German", 20106), 
    ENC ("x-IA5-Norwegian", 20108), 
    ENC ("x-IA5-Swedish", 20107), 
    ENC ("x-iscii-as", 57006), 
    ENC ("x-iscii-be", 57003), 
    ENC ("x-iscii-de", 57002), 
    ENC ("x-iscii-gu", 57010), 
    ENC ("x-iscii-ka", 57008), 
    ENC ("x-iscii-ma", 57009), 
    ENC ("x-iscii-or", 57007), 
    ENC ("x-iscii-pa", 57011), 
    ENC ("x-iscii-ta", 57004), 
    ENC ("x-iscii-te", 57005), 
    ENC ("x-mac-arabic", 10004), 
    ENC ("x-mac-ce", 10029), 
    ENC ("x-mac-chinesesimp", 10008), 
    ENC ("x-mac-chinesetrad", 10002), 
    ENC ("x-mac-croatian", 10082), 
    ENC ("x-mac-cyrillic", 10007), 
    ENC ("x-mac-greek", 10006), 
    ENC ("x-mac-hebrew", 10005), 
    ENC ("x-mac-icelandic", 10079), 
    ENC ("x-mac-japanese", 10001), 
    ENC ("x-mac-korean", 10003), 
    ENC ("x-mac-romanian", 10010), 
    ENC ("x-mac-thai", 10021), 
    ENC ("x-mac-turkish", 10081), 
    ENC ("x-mac-ukrainian", 10017), 
    ENC ("x-ms-cp932", 932),
    ENC ("x-sjis", 932), 
    ENC ("x-unicode-1-1-utf-7", 65000), 
    ENC ("x-unicode-1-1-utf-8", 65001), 
    ENC ("x-unicode-2-0-utf-7", 65000), 
    ENC ("x-unicode-2-0-utf-8", 65001), 
    ENC ("x-x-big5", 950), 
    

    测试用例:

    using System;
    using System.IO;
    using System.Text;
    using System.Diagnostics;
    
    namespace consoleencoding
    {
        class MainClass
        {
            public static void Main (string[] args)
            {
                var tmpFile = Path.GetTempFileName ();
                TextWriter tw = new StreamWriter(File.Open(tmpFile, FileMode.Create), Encoding.GetEncoding("iso-8859-1"));
                tw.WriteLine("éèçàôûêâ");
                tw.Close();
                Process.Start ("vi", tmpFile);
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-30
      • 2012-01-03
      • 2017-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-03
      相关资源
      最近更新 更多