相关疑难解决方法(0)

检查编码中是否存在字符

我正在编写一个程序,部件在CP437中呈现位图字体.

在一个呈现文本的函数中我希望能够char在编码转换之前检查CP437中是否有可用的文件,例如:

public static void DrawCharacter(this Graphics g, char c)
{
    if (char_exist_in_encoding(Encoding.GetEncoding(437), c) {
        byte[] src = Encoding.Unicode.GetBytes(c.ToString());
        byte[] dest = Encoding.Convert(Encoding.Unicode, Encoding.GetEncoding(437), src);
        DrawCharacter(g, dest[0]); // Call the void(this Graphics, byte) overload
    }
}
Run Code Online (Sandbox Code Playgroud)

如果没有检查,CP437外的任何字符都将产生'?'(63,0x3F).我想完全隐藏任何无效字符.是否有char_exist_in_encoding 以下愚蠢方法以外的实现?

private static bool char_exist_in_encoding(Encoding e, char c)
{
    if (c == '?')
        return true;
    byte[] src = Encoding.Unicode.GetBytes(c.ToString());
    byte[] dest = Encoding.Convert(Encoding.Unicode, e, src);
    if (dest[0] == 0x3F)
        return false;
    return true;
}
Run Code Online (Sandbox Code Playgroud)

也许不是很相关,但位图是这样创建的:

Bitmap b …
Run Code Online (Sandbox Code Playgroud)

.net c# encoding character-encoding

8
推荐指数
1
解决办法
2351
查看次数

标签 统计

.net ×1

c# ×1

character-encoding ×1

encoding ×1