我正在尝试对新的罗马尼亚语字符“ă ș ț”进行编码以从 DB 导出到 CSV 文件。这些新字符是在 2000/01 的某个地方添加的,但框架中没有可用的编码(即使在 .net 4.5 中)。
罗马尼亚网站之一在这里解释了字符的用法。我在MSDN上提到了详细信息,但没有提到 iso-8859-16 编码。如果我使用上述编码,则 C# 抛出异常“'ISO_8859-16' 不是受支持的编码名称。”
以前有人用过这种编码吗?
桑杰
我正在尝试对新的罗马尼亚语字符“ă ș ț”进行编码以从 DB 导出到 CSV 文件。这些新字符是在 2000/01 的某个地方添加的,但框架中没有可用的编码(即使在 .net 4.5 中)。
罗马尼亚网站之一在这里解释了字符的用法。我在MSDN上提到了详细信息,但没有提到 iso-8859-16 编码。如果我使用上述编码,则 C# 抛出异常“'ISO_8859-16' 不是受支持的编码名称。”
以前有人用过这种编码吗?
桑杰
.Net 没有对 ISO 8859-16 的内置支持。最简单的解决方案是切换到 Unicode 编码,例如 UTF-8。
如果你仍然想要 ISO 8859-16,你可以自己实现它。该类Encoding
是可扩展的。作为参考,请参阅Wikipedia或MSDN
有关 EBCDIC 的示例,请参见此答案:为 Roman8 字符集创建自己的编码
您需要实现抽象方法:
int GetByteCount(char[], int, int)
int GetBytes(char[], int, int, byte[], int)
int GetCharCount(byte[], int, int)
int GetChars(byte[], int, int, char[], int)
int GetMaxByteCount(int)
int GetMaxCharCount(int)
也许是虚拟成员:
bool IsSingleByte { get; }
string EncodingName { get; }