写入文件出方块

时间:2011-09-06 16:44:09

标签: c# asp.net text encoding utf-8

对于我的测试数据,我使用的是字符:

漢字仮名交じり文

我写的文件代码是:

// Create license key file
if (!File.Exists(Settings.LicenseFilesLocation + "/" + EmailAddress + "/" + LicenseFileName))
{
    HttpContext.Current.Response.Write(Name.Normalize());
    HttpContext.Current.Response.End();

    // UTF-8
    StreamWriter License = File.CreateText(Settings.LicenseFilesLocation + "/" + EmailAddress + "/" + LicenseFileName);

    License.WriteLine("Licensed to: " + Name.Normalize());

    License.Flush();
    License.Close();  

正如您所看到的,我在将值保存到文件之前打印该值以进行检查,并且正确打印。但是在保存的文本文件中,当我在记事本中打开它时,它会以很多正方形出现(见截图):

enter image description here

当我复制并粘贴这些字符时,它们会正确复制并粘贴为:

漢字仮名交じり文

我们有很多客户说他们的许可证文件的名称是他们不喜欢的正方形。我们打开并验证此文件的软件程序也将其名称显示为正方形。

任何想法如何解决这个问题?我们希望这样,当客户打开他们的许可证txt文件时,它会在没有正方形的情况下显示他们的名字。

1 个答案:

答案 0 :(得分:7)

这个问题有两个来源:

  1. 您的文件编码不正确。如果您使用的不是ASCII字符,那么您需要有意识地决定选择正确的编码。复制和粘贴工作的事实让我觉得你的编码没问题,但你似乎还没有意识到这是在幕后发生的事实。
  2. 您的编辑器正在尝试使用无法正确呈现它们的字体显示unicode字符。并非每种字体都支持Unicode。将字体更改为可以呈现Unicode字符的字体,您应该很高兴。
  3. 编辑:作为旁注,了解笑话here也会对你有所帮助。