我有一个C#应用程序,我存储了当用户正常匹配普通特定字符串时要显示的Unicode字符的代码点值。
问题是当我直接存储代码点值(比如说\ uFB80)时,应用程序运行正常。但是当我从一个只有代码点的文件或变量(在这种情况下是FB80)中读取时,我会得到很多错误渲染的字符。将存储的值更改为\ uFB80或尝试在值前面添加“\ u”都会导致系统将其读取为\ uFB80,最终会产生另一个错误的结果。
解决这个问题的方法是什么?
XmlTextReader reader = new XmlTextReader("file.xml");
reader.Read();
reader.MoveToAttribute("glyph");
glyph = reader.Value;
// glyph will be "FB80"
// if xml file had "\uFB80", glyph will be "\\uFB80"
richTextBox1.SelectionFont = "QCF_P604";
richTextBox1.AppendText(glyph);
答案 0 :(得分:0)
亲爱的Jalal,因为我不知道你有一个String(在文件中或在TextBox中)当你从Box中解析字符串时一切正常,但是当你试图从你面临问题的文件中读取时。
你有一个XML文档,你已经在其中编写了字符字形。并且此XML的每个元素(例如:Item)都有一些属性,如Glyph。 (人物的形状)
如果您只想以错误的方式显示角色的形状。你唯一应该做的就是编写一个简单的方法,给出一个十进制(或十六进制)的字符值并返回字符。
返回的角色将在任何地方显示为单个字符。所以我强烈建议你改变方法(这会加快你的应用程序)。
// het a hex and return char (you can give it a large string or a single hexcode
// (hex without U just HexCode)
public static char ConvertHexToUnicode(string hexCode)
{
if (hexCode != string.Empty)
return ((char)int.Parse(hexCode, NumberStyles.AllowHexSpecifier));
char empty = new char();
return empty;
}//end
和十进制值使用以下代码
public static char ConvertDecimalToChar(Int64 decimalValue)
{
return ((char)int.Parse(decimalValue.ToString(), NumberStyles.Integer));
}