C# 写入文件的结果是方块

C# 写入文件的结果是方块,c#,asp.net,text,encoding,utf-8,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.Respon

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

漢字仮名交じり文
我编写文件的代码是:

// 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();  
如您所见,我正在打印值,然后将其保存到文件以进行检查,并且打印正确。然而,当我在记事本中打开保存的文本文件时,它显示为许多正方形(参见屏幕截图):

当我复制和粘贴这些字符时,它们会按照以下方式正确复制和粘贴:

漢字仮名交じり文
我们有很多客户说,他们的许可证文件的名称用正方形表示,这是他们不喜欢的。我们打开并验证此文件的软件程序也将其名称显示为正方形


有没有办法解决这个问题?我们希望这样,当客户打开他们的许可证txt文件时,它会显示他们的全名,不带方框。

这个问题有两个原因:

  • 您的文件编码不正确。如果您使用的不是ASCII字符,那么您需要有意识地选择正确的编码。事实上,复制和粘贴工作使我认为你的编码是好的,但你似乎仍然不知道这是发生在幕后的事实
  • 编辑器正在尝试使用无法正确呈现unicode字符的字体显示unicode字符。并非所有字体都支持Unicode。将字体更改为可以呈现Unicode字符的字体,您就可以开始了

  • 编辑:作为旁注,理解这个笑话对你也有好处。

    谢谢你的回复,我觉得我正在将它编码为UTF8?@Tom Gullen,UTF8应该可以,所以你遇到了问题2——你的字体无法呈现字符。记事本设置为Arial,如果我设置为ConsoleAS(与上述问题中显示的字符字体相同)它们仍然显示为Notepadah中的方框“Adobe Ming Std”似乎显示得很好。这似乎是正确的答案,谢谢。