【发布时间】:2013-09-24 20:36:17
【问题描述】:
让我重新表述我的问题:
我正在从一个显示符号没有问题的文本文件中读取其中一个字符是注册符号 ® 的文本。当我从文件中读取字符串后尝试打印字符串时,该符号是不可打印的字符。当我读入字符串并将字符串拆分为字符并将字符转换为 Int16 并打印出十六进制时,我得到 0xFFFD。我在打开StreamReader 时指定Encoding.UTF8。
这就是我所拥有的
using (System.IO.StreamReader sr = new System.IO.StreamReader(HttpContext.Current.Server.MapPath("~/App_Code/Hormel") + "/nutrition_data.txt", System.Text.Encoding.UTF8))
{
string line;
while((line = sr.ReadLine()) != null)
{
//after spliting the file on '~'
items[i] = scrubData(utf8.GetString(utf8.GetBytes(items[i].ToCharArray())));
//items[i] = scrubData(items[i]); //original
}
}
这里是scrubData函数
private String scrubData(string data)
{
string newStr = String.Empty;
try
{
if (data.Contains("HORMEL"))
{
string[] s = data.Split(' ');
foreach(string str in s)
{
if (str.Contains("HORMEL"))
{
char[] ch = str.ToCharArray();
for(int i=0; i<ch.Length; i++)
{
EventLogProvider.LogInformation("LoadNutritionInfoTask", "Test", ch[i] + " = " + String.Format("{0:X}", Convert.ToInt16(ch[i])));
}
}
}
}
return String.Empty;
}
catch (Exception ex)
{
EventLogProvider.LogInformation("LoadNutritionInfoTask", "ScrubData", ex.Message);
return data;
}
}
我不关心现在返回的内容,我正在打印对应的字符和十六进制代码。
【问题讨论】:
-
嗯...只要搜索“®”?
-
你试一试,看看哪个是对的,如果有的话,怎么样?
-
@Cybȫʁgϟ37 当我搜索“®”时,它与符号不匹配。
-
@DFord 那么符号不存在。这可能是因为您在读取文件时使用了不正确的编码
-
所以这确实是一个关于为什么您尝试查找“®”没有成功的问题。在这种情况下,您真的应该向我们展示SSCCE。然后,我们可以就您可能做错的地方向您提供建议。