外国文化XML文本解析

时间:2013-07-31 21:00:09

标签: c# xml windows-phone-7 exception xna

我不久前发布了一款Windows手机应用程序。从那以后,BugSense报告了一个导致国外崩溃的问题:

  

System.ArgumentException - 字符'İ'(0x0130)不可用   在这个SpriteFont中。如果适用,请调整字体的开头和结尾   CharacterRegions包含此角色。参数名称:字符

这是堆栈跟踪:

  

在   Microsoft.Xna.Framework.Graphics.SpriteFont.GetIndexForCharacter(CHAR   性格)   Microsoft.Xna.Framework.Graphics.SpriteFont.InternalMeasure(StringProxy&安培;   文字)   Microsoft.Xna.Framework.Graphics.SpriteFont.MeasureString(String text)   at GlobalEngine.Visual.TextBase.CalculateSpriteOrigin(Object sender,   EventArgs e)在System.EventHandler.Invoke(Object sender,EventArgs e)   at GlobalEngine.Visual.TextBase.set_FormattedText(String value)at   GlobalEngine.Visual.TextLabel.set_Text(String value)at   FourWordsLibrary.GameUtils.Letter..ctor(Char letter,AssetManager   assetManager,SpriteBatch spriteBatch,Single width)at   FourWordsLibrary.GameUtils.Word..ctor(String orderedWord,String   shuffledWord,AssetManager assetManager,SpriteBatch spriteBatch,   InputManager inputManager,Single letterWidth)at   FourWordsLibrary.GameUtils.Word..ctor(String orderedWord,String   shuffledWord,AssetManager assetManager,SpriteBatch spriteBatch,   InputManager inputManager)at   FourWordsLibrary.Controllers.GameControl.StatePlay.SetupNextLevel()at   FourWordsLibrary.Controllers.GameControl.StatePlay.Activate(对象   obj)at GlobalEngine.Base.StateManager 1.SetState(T state, Object obj) at GlobalEngine.Base.StateManager 1.SetState(T state)at   FourWordsLibrary.Controllers.GameControl.SetPack(PackManager   packManager)在FourWords.Screens.GameScreen..ctor(引擎引擎,   对象obj)

我的应用程序是文字游戏,我从XML文件中检索每个级别的单词。所以我怀疑,当XmlReader正在读取文件时,它会使用外来文化,这会导致检索拉丁字母,然后当应用程序尝试使用严格的英文精灵字体绘制字母时崩溃。 我试图寻找一种方法来指示XmlReader使用InvariantCulture进行读取,类似于.toString()方法中的方法,但是没有找到任何方法。任何想法如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

对我来说似乎更多是输入XML文件问题。检查它是否包含此“无效”字符('İ'(0x0130))并在必要时进行更正。如果您使用app / game编写输入XML,请检查您是否使用InvariantCulture编写内容。

BR,