f7q / learning

NET Core learning Github
Other
0 stars 1 forks source link

Default Code Page Specfull #33

Open f7q opened 8 years ago

f7q commented 8 years ago

デフォルトの文字コードが今までのC#仕様(UNICODE)と異なる。 Wikiに整理する。

https://msdn.microsoft.com/ja-jp/library/ms404377(v=vs.110).aspx

プラットフォームに関する注意事項: .NET Core

既定で、.NET Core では、コード ページ 28591 以外のコード ページ エンコーディングや
 Unicode エンコーディング (UTF-8 や UTF-16 など) を使用できません。
 ただし、使用するアプリに、.NET Framework を対象とする標準の
 Windows アプリに含まれているコード ページ エンコーディングを追加できます。
 詳細については、「CodePagesEncodingProvider」のトピックを参照してください。

かつてRoslynコンパイラもShift-jisでコーディングしてたら、エラーなるIssue 4264があった。

project.json

{
  "version": "1.0.0-*",
  "buildOptions": {
    "debugType": "portable",
    "emitEntryPoint": true
  },
  "dependencies": {},
  "frameworks": {
    "netcoreapp1.0": {
      "dependencies": {
        "Microsoft.NETCore.App": {
          "type": "platform",
          "version": "1.0.1"
        },
        "System.Text.Encoding.CodePages": "4.0.1" //ADD
      },
      "imports": "dnxcore50"
    }
  }
}

Program.cs

using System;
using System.Text; //ADD

namespace ConsoleApplication
{
    public class Program
    {
        public static void Main(string[] args)
        {
            Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); //ADD
            Console.WriteLine("ハロー World!"); //ここが文字化けする。
            Console.WriteLine(Console.OutputEncoding); //ADD
        }
    }
}