我想用相应的HTML代码(例如á,ñ,¿,¡等)替换带重音的字符(例如á,ñ,¿,¡等)。
例如,这行文字:
[[不可能给我留下深刻的印象,再给卡瓦列罗·特里劳尼博士,Livesey y otros muchosseñoresme医生
...应成为:[[我不可能在á
时对我进行复审,而在Liveball y ot uchos muchos博士señores
中]]
这应该很简单。我有这段代码可以尝试:
private void buttonReplaceCharsWithCodes_Click(object sender, EventArgs e)
{
String fallName = String.Empty;
List<String> linesModified = new List<string>();
StreamReader file = null;
try // finally
{
try // catch
{
DialogResult result = openFileDialog1.ShowDialog();
if (result == DialogResult.OK)
{
fallName = openFileDialog1.FileName;
}
file = new StreamReader(fallName);
String line;
while ((line = file.ReadLine()) != null)
{
linesModified.Add(line);
}
progressBar1.Maximum = linesModified.Count;
progressBar1.Value = 0;
labelProgFeedback.Text = "Replacing accented chars with HTML codes";
for (int i = 0; i < linesModified.Count; i++)
{
linesModified[i] = linesModified[i].Replace("á", "á");
linesModified[i] = linesModified[i].Replace("Á", "Á");
linesModified[i] = linesModified[i].Replace("é", "é");
linesModified[i] = linesModified[i].Replace("É", "É");
linesModified[i] = linesModified[i].Replace("í", "í");
linesModified[i] = linesModified[i].Replace("Í", "Í");
linesModified[i] = linesModified[i].Replace("ñ", "ñ");
linesModified[i] = linesModified[i].Replace("Ñ", "Ñ");
linesModified[i] = linesModified[i].Replace("ó", "ó");
linesModified[i] = linesModified[i].Replace("Ó", "Ó");
linesModified[i] = linesModified[i].Replace("ú", "ú");
linesModified[i] = linesModified[i].Replace("Ú", "Ú");
linesModified[i] = linesModified[i].Replace("ü", "ü");
linesModified[i] = linesModified[i].Replace("Ü", "Ü");
linesModified[i] = linesModified[i].Replace("¿", "¿");
linesModified[i] = linesModified[i].Replace("¡", "¡");
progressBar1.PerformStep();
}
progressBar1.Value = 0;
}
catch (Exception ex)
{
MessageBox.Show(String.Format("Exception {0}", ex.Message));
}
}
finally
{
String massagedFileName = String.Format("{0}_Massaged.txt", fallName);
File.WriteAllLines(massagedFileName, linesModified);
file.Close();
}
}
很遗憾,它不起作用。它用“这到底是什么?!?”代替重音字符。符号(�)代替所需的HTML代码。要使它正常工作需要什么?
更新回答评论,这是我加载的文件的内容:
我不可能在卡瓦列罗·特里劳尼(Caballero Trelawney)死后复活,在Livesey y otros muchosseñoresme han历史悠久的西班牙历史和历史Isla del Tesoro。 Voy,pues,áponer manosála obracontándolotodo,des de el
,”和prima vez一起使用llegóáalojarse en ella aquel viejo marino de tez布龙达达和库尔蒂达por los elementos,确保您可以看到cicatriz。,hasta el ,sin dejarme cosa alguna en el tintero,de la deuando ladeterminacióngeográficade la伊斯拉·伊斯坦·索拉曼特岛todavíaun tesoro no descubierto。感恩之歌17-y retrocedo hasta laépocaen que mi padreteníaaúnla posadadel“ Almirante Benbow
...这是它与替换文件一起保存的文件:不可能我有sido rehusarme�lasrepetidas instancias que elCaballero Trelawney,《 Livesey y otros muchos医生》让我感到震惊历史悠久的西班牙历史和历史Isla del Tesoro。 Voy,pues,poner manos,la obra cont.ndolo todo,desde el
IOW,替换没有发生-我只是看到“神秘”字符而不是HTML代码。
当我单步执行代码并检查“ linesModified”的各行时,我在运行时看到相同的东西(我看到了。)。我猜比看星星要好。这是过程:这是一个简单的工具,在其中单击按钮以打开(.txt)文件。处理后,它将文件的新版本保存到新文件。更新2
由于可以将其显式保存为UTF8,所以我认为也许在读取文件时这样做可能是有利的,但这:
while ((line = file.ReadLine(ASCIIEncoding.UTF8)) != null)
...不编译,表示没有带1个参数的ReadLine方法没有重载。
我想用相应的HTML代码(例如á,ñ,¿,¡等)替换带重音的字符(例如á,ñ,¿,¡等)。例如,以下文本行:Imposible me ha ...
<<<<
File.WriteAllLines(massagedFileName, linesModified, Encoding.UTF8);
file = new StreamReader(fallName, Encoding.Default, true);
í
a en quepor primea vez llegó
á
马里诺·德·特斯·布龙萨达和库尔斯蒂达·波洛斯·元素奥斯可见的cicatriz。