2012-05-10 41 views
-1

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

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

EG:

该文本是 - 但我没有意思连字符。实际的单词是n之上的双点。只能在记事本中使用Terminal字体才能看到。

enter image description here

+0

需要更多信息 – CyprUS

+1

你想要什么?文本数据与字体无关。渲染/打印等可以显示数据到不同的字体 – Tilak

+0

在显示文本的应用程序中使用相同的字体。 – animaonline

回答

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(); 
+0

虽然我没有得到一个完美的解决方案,但你的编码思想给了实验的不同想法。我在应用程序的文本框中获得了不同的数字,当我将这些数字复制并粘贴到记事本中时,我得到了我想要的完美结果。没有编码上述技术(从文本框中获取数据并粘贴到记事本中)也失败了。所以谢谢@svenv! –

+0

而下面我已经解释了我如何摆脱这一点。 –

5

其实是有保存在.txt files没有font信息。

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

+0

“终端”字体在Visual Studio 2005中不可用! –

+0

让我知道如何使用字体来阅读它。你能给我举个例子,c#中用来读取数据的默认字体是什么。 –

1

文本数据始终是独立的字体,所以我觉得这是你的问题没有这样的答案

+0

正确!但应用程序的文本框不显示我有问题的内容。它看起来像逗号,连字符等,但不像上面的双点那样是原件。因为“终端”字体在VS 2005中不可用! –

-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]); 

    } 
} 

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

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提供的结果在文本框将是一个盒子或逗号或连字符等,如果这个数据被复制并在记事本粘贴“终端”的字体,我们可以看到的数据。如果不使用编码技术,即使您从文本框粘贴数据,它也会看起来像一颗心或任何其他符号。所以我的问题被整理出来了。感谢你的回复。

相关问题