public static async Task<EncodingHelper> GetDBCSEncoding(string name) { name = name.ToLower(); EncodingHelper encoding = new EncodingHelper(); encoding._webName = name; if (_cache.ContainsKey(name)) { var tuple = _cache[name]; encoding._dbcsToUnicode = tuple.Item1; encoding._unicodeToDbcs = tuple.Item2; return encoding; } var dbcsToUnicode = new char[0x10000]; var unicodeToDbcs = new ushort[0x10000]; using (Stream stream = await GetInstall()) using (BinaryReader reader = new BinaryReader(stream)) { for (int i = 0; i < 0xffff; i++) { ushort u = reader.ReadUInt16(); unicodeToDbcs[i] = u; } for (int i = 0; i < 0xffff; i++) { ushort u = reader.ReadUInt16(); dbcsToUnicode[i] = (char)u; } } _cache[name] = new Tuple<char[], ushort[]>(dbcsToUnicode, unicodeToDbcs); encoding._dbcsToUnicode = dbcsToUnicode; encoding._unicodeToDbcs = unicodeToDbcs; return encoding; }
public DBCSDecoder(EncodingHelper encoding) { _encoding = encoding; }