MySql - fixed problem where socket was not getting closed properly (thanks Steve!)
[mono.git] / mcs / class / ByteFX.Data / mysqlclient / CharSetMap.cs
1 using System;
2 using System.Text;
3 using System.Collections;
4
5 namespace ByteFX.Data.MySqlClient
6 {
7         /// <summary>
8         /// Summary description for CharSetMap.
9         /// </summary>
10         internal class CharSetMap
11         {
12                 private static Hashtable mapping;
13
14                 /// <summary>
15                 /// 
16                 /// </summary>
17                 /// <param name="MySqlCharSetName"></param>
18                 /// <returns></returns>
19                 public static Encoding GetEncoding( string MySqlCharSetName ) 
20                 {
21                         if (mapping == null )
22                                 InitializeMapping();
23                         try 
24                         {
25                                 int cpid = (int)mapping[ MySqlCharSetName ];
26                                 return Encoding.GetEncoding( cpid );
27                         }
28                         catch (System.NotSupportedException) 
29                         {
30                                 return Encoding.GetEncoding(0);
31                         }
32                 }
33
34                 /// <summary>
35                 /// 
36                 /// </summary>
37                 private static void InitializeMapping() 
38                 {
39                         mapping = new Hashtable();
40
41                         // relatively sure about
42                         mapping.Add( "default", 0 );
43                         mapping.Add( "big5", 950 );                     // Traditional Chinese
44                         mapping.Add( "latin1", 28591 );         // Latin alphabet #1
45                         mapping.Add( "utf8", 65001 );
46                         mapping.Add( "ucs2", 1200 );
47                         mapping.Add( "latin2", 28592 );
48                         mapping.Add( "latin4", 28594 );
49                         mapping.Add( "latin3", 28593 );
50                         mapping.Add( "latin5", 1254 );
51                         mapping.Add( "cp1251", 1251 );          // Russian
52                         mapping.Add( "win1251", 1251 );
53                         mapping.Add( "hebrew", 1255 );          // Hebrew
54                         mapping.Add( "greek", 1253 );           // Greek
55                         mapping.Add( "sjis", 932 );                     // Shift-JIS
56                         mapping.Add( "gbk", 936 );                      // Simplified Chinese
57                         mapping.Add( "cp866", 866 );
58                         mapping.Add( "euc_kr", 949 );
59
60                         // maybe, maybe not...
61                         mapping.Add( "win1250", 1250 );         // Central Eurpoe
62                         mapping.Add( "win1251ukr", 1251 );
63                         mapping.Add( "latin1_de", 1252 );       // Latin1 German
64                         mapping.Add( "german1", 1252 );         // German
65                         mapping.Add( "danish", 1252 );          // Danish
66                         mapping.Add( "dos", 437 );                      // Dos
67                         mapping.Add( "pclatin2", 852 );         
68                         mapping.Add( "win1250ch", 1250 );
69                         mapping.Add( "cp1257", 1257 );
70                         mapping.Add( "usa7", 646 );
71                         mapping.Add( "czech", 912 );
72                         mapping.Add( "hungarian", 912 );
73                         mapping.Add( "croat", 912 );
74
75 /*                      ("gb2312", "EUC_CN");
76                         ("ujis", "EUC_JP");
77                         ("latvian", "ISO8859_13");
78                         ("latvian1", "ISO8859_13");
79                         ("estonia", "ISO8859_13");
80                         ("koi8_ru", "KOI8_R");
81                         ("tis620", "TIS620");
82                         ("macroman", "MacRoman");
83                         ("macce", "MacCentralEurope");
84 */
85
86                 }
87         }
88 }