2013-04-09 40 views
0

我正在使用resx文件来存储一些Web应用程序的本地化内容。我被要求编写一个测试机制来知道这些资源文件的值是否具有非UTF-8内容。我可以将非UTF-8内容添加到.net resx文件吗?

resx文件是XML文件,它们的头文件指定它们是UTF-8编码的。所以我的问题(也许显而易见或者愚蠢)是,有人可以将非UTF-8字符串添加到资源文件值中吗?

我已经搜索了如何获得一些字符串的编码,但没有防弹的方法,所以我不知道如果我已经被要求创建的测试是需要或可能的.. 。

编辑 只是为了澄清,试验应在本地化应用程序中进行,并且如果该字符串不是一个合法的UTF-8则显示默认的(本地化)值

回答

0

在一定程度上,是的。您可以毫不费力地存储纯ASCII文本。

以外呢?你最好的选择是为它写一个测试。在你的代码中定义一些非UTF8字符串,将它们存储在.resx文件中(为了简单起见,使用ResxRescourceWriter)并将它们取出。将它们打印到屏幕上并查看它们是否匹配。

当然也可以更改resx文件的编码。如果这样做,则可以存储以该格式编码的字符串。

你最好打赌是试试看看会发生什么。

编辑:根据评论中的澄清。

如果您需要验证现有值,最好的选择是遍历resx文件,将所有文本转储到.txt文件。

如果您然后在Notepad ++中打开该文件,则可以指定UTF-8编码。任何不能显示的都不是UTF-8文本,从resx中拉出时不会正确显示。

+0

问题是,我在该应用程序上有3,000个resx文件(不要问为什么,我在那之前触摸了代码:P)。所以需要知道的是,当我尝试加载这些数千个文件中的任何一个数据时(本地化时),请确保该字符串是有效的UTF-8值 – pollirrata 2013-04-09 21:03:05

+0

@pollirrata:根据您的评论更新我的回答。 – Jeff 2013-04-09 21:06:39

+1

纯ASCII *是*有效的UTF-8。 – 2013-04-09 21:08:11