我正在使用resx文件存储某些网络应用的本地化内容。我被要求编写一个测试机制来了解这些资源文件是否在值上有非UTF-8内容。
resx文件是XML文件,在其标题上指定它们是UTF-8编码的。所以我的问题(可能显而易见或愚蠢)是,有人可以将非UTF-8字符串添加到资源文件值中吗?
我已经搜索了如何获取某些字符串的编码,但是没有防弹方法,所以我不确定是否需要或可能要求我创建的测试...
EDIT 只是为了澄清,测试应该在本地化的应用程序中执行,如果字符串不是有效的UTF-8,则显示默认(本地化)值
答案 0 :(得分:0)
在某种程度上,是的。您可以毫无困难地存储纯ASCII文本。
除此之外?你最好的选择是为它写一个测试。在代码中定义一些非UTF8字符串,将它们存储在.resx文件中(为简单起见使用ResxRescourceWriter
)并将它们拉回来。将它们打印到屏幕上,看它们是否匹配。
当然也可以更改resx文件的编码。如果这样做,您可以存储以该格式编码的字符串。
你最好的办法就是试着看看会发生什么。
编辑:基于评论中的澄清。
如果您需要验证现有值,最好的选择是迭代resx文件,将所有文本转储到.txt文件。
如果您随后在Notepad ++中打开该文件,则可以指定UTF-8编码。任何无法显示的内容都不是UTF-8文本,从resx中提取时无法正确显示。