我正在尝试编码新的罗马尼亚字符“ăş”以从DB导出到CSV文件。这些新角色在2000/01年的某处添加,但框架中没有可用的编码(即使在.net 4.5中)。
其中一个罗马尼亚网站解释了字符here的用法。我已经提到了MSDN的详细信息,但没有提及iso-8859-16编码。如果我使用上面的编码,那么C#抛出异常“'ISO_8859-16'不是受支持的编码名称。”
有没有人曾经使用过这种编码?
桑杰
答案 0 :(得分:2)
.Net没有内置的ISO 8859-16支持。最简单的解决方案是切换到Unicode编码,例如UTF-8。
如果您仍然需要ISO 8859-16,您可以自己实施。 Encoding
类是可扩展的。作为参考,请参阅Wikipedia或MSDN
有关EBCDIC的示例,请参阅此答案:Create own Encoding for Roman8 charset
您需要实现抽象方法:
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; }