-1

考虑一个记事本 Text.txt,它的数据只能用字体“终端”读取。如何在 C# 中实现?只有当我将字体设置为“终端”时,记事本的内容才可读。否则我只能看到盒子。C# 必须使用“终端”字体读取内容,以便它可以获取准确的数据而不是 BOX。尝试使用 UTF8。一样的回应。

即使我在这里写记事本的内容,我也可以看到连字符。

例如:

文本是——但我不是连字符的意思。实际单词是 n 上方的双点。只有在记事本中使用终端字体才能看到。

在此处输入图像描述

4

4 回答 4

5

中实际上没有font保存任何信息.txt files

只需在 C# 中使用您希望在 .txt 文件中看到的相同字体。

于 2012-05-10T08:04:24.353 回答
2

您的问题可能是文本文件的编码(代码页)。文本文件是用什么语言编写的?例如,如果文件包含希腊文本(代码页 1253),您将使用如下内容:

System.Text.Encoding GreekEncoding = System.Text.Encoding.GetEncoding(1253);
System.IO.StreamReader sr = new StreamReader(@"c:\test.txt", GreekEncoding);
System.Diagnostics.Debug.WriteLine(sr.ReadLine());
sr.Close();
sr.Dispose();
于 2012-05-10T08:17:36.417 回答
1

文本数据总是独立于字体,所以我认为你的问题没有这样的答案

于 2012-05-10T08:09:17.350 回答
-1
Encoding GreekEncoding = Encoding.GetEncoding(1254);
using (StreamReader sr = new StreamReader(sNotepadName+".txt", GreekEncoding))
{
    while ((input = sr.ReadLine()) != null)
    {
        sTempInput = input.Split('='); //Data - double dotted above A=A
        lMyDictionary.Add(sTempInput[0],sTempInput[1]);

    }
}

添加到字典后,如果输入 A,我必须在文本框中的 A 符号上方显示双点。

string[] sSplitedText = sEnteredText.Split(' '); //Because many letters can be entered with sapce as delimiter 
foreach(string sNewStr in sSplitedText)
{
    if (lMyDictionary.ContainsKey(sNewStr))
    {
        sReturnText += lMyDictionary[sNewStr];
    }
}
ResultDisplayTextBox.Text = sReturnText;

由于“终端”字体在 vs2005 中不可用,因此文本框中的结果将是一个框或逗号或连字符等。如果将此数据复制并粘贴到记事本中并使用“终端”字体我们可以看到数据。如果不使用编码技术,即使您从文本框中粘贴数据,它也会看起来像一颗心或任何其他符号。这样我的问题就解决了。感谢你的回复。

于 2012-05-11T07:44:40.497 回答