C# 如何在控制台中正确书写英文抄本?

C# 如何在控制台中正确书写英文抄本?,c#,console,console-application,transcription,C#,Console,Console Application,Transcription,我想在控制台上写英文抄本 在调试器中,我有一个sədʒest 但在控制台中,我有s??d?est 如何解决这个问题?谢谢 向上 获取转录的客户端 class TranslationFormattedResult { public string Transcription { get; set; } public List<string> TranslatedWordList = new List<string>();

我想在控制台上写英文抄本

在调试器中,我有一个
sədʒest
但在控制台中,我有
s??d?est

如何解决这个问题?谢谢

向上

获取转录的客户端

   class TranslationFormattedResult
    {
        public string Transcription { get; set; }
        public List<string> TranslatedWordList = new List<string>();
    }
    class TranslatorClient
    {
        private TranslationServiceSoapClient _client = new TranslationServiceSoapClient("TranslationServiceSoap");

       public async Task<TranslationFormattedResult> GetTranslationAsync(string word)
        {
            var result = await _client.GetTranslationAsync("er", "General",
                word,
                lang: "ru",
                limit: 3000,
                useAutoDetect: true,
                key: "",
                ts: "MainSite",
                tid: "");
            var translationResult = new TranslationFormattedResult {Transcription = await GetTranscriptionAsync(result)};
            return translationResult;
        }

        private async Task<string> GetTranscriptionAsync(TranslationResult result)
        {
            var task = new Task<string>(() =>
                                            {
                                                string pr = null;
                                                string pattern = "\\[.+\\]";
                                                var match = Regex.Match(result.result, pattern);
                                                if(match.Success)
                                                {
                                                    pr = match.Value.Trim('[', ']');
                                                }
                                                return pr;
                                            });
            task.Start();
            return await task;
        }
    }
这是俄文吗

如果是,请尝试在命令行中运行
chcp 866

参考这个

这个答案还表明可能需要选择特定(或至少不同)的字体(不确定这是否适用于俄语)

这是俄语吗

如果是,请尝试在命令行中运行
chcp 866

参考这个

这个答案还表明可能需要选择特定(或至少不同)字体(不确定这是否适用于俄语)

您应该:

  • outpunecoding
    设置为
    Unicode
    Console.outpunecoding=Encoding.Unicode
  • 运行你的程序
  • 右键单击控制台窗口
  • 在“属性”窗口中,更改控制台字体并将其设置为
    Consolas

  • 控制台中的结果是:

    您应该:

  • outpunecoding
    设置为
    Unicode
    Console.outpunecoding=Encoding.Unicode
  • 运行你的程序
  • 右键单击控制台窗口
  • 在“属性”窗口中,更改控制台字体并将其设置为
    Consolas

  • 控制台中的结果是:


    这可能是控制台的问题,而不是您的程序的问题。如果你想确保它正确显示,你可能需要一个GUI而不是控制台。你能显示一些代码吗?这可能是控制台的问题,而不是你的程序的问题。如果你想确保它正确显示,你可能需要一个GUI而不是控制台。你能显示一些代码吗?我有英文版的windows。我正在尝试使用所有编码。我没有任何好的结果。@Victor说清楚,您在命令行中使用过这个命令吗?除非控制台知道要使用哪个代码页,否则我认为它无法正确显示应用程序的输出。我有英文windows版本。我正在尝试使用所有编码。我没有任何好的结果。@Victor说清楚,您在命令行中使用过这个命令吗?除非控制台知道要使用哪一个代码页,否则我认为它无法正确显示应用程序的输出。@Victor仅供参考显然,您可能需要注意MS的unicode实现,根据评论员的回答:(无法保证这一点的可信度,因为没有提供权威来源作为参考——只是提醒您注意,以防出现问题。)@Victor just FYI显然,您可能需要注意MS的unicode实现,根据评论人对这一答案的评论:(无法保证这一点的可信度,因为没有提供权威来源作为参考——只是提醒您注意,以防出现问题。)
    class Program
                {
                    static void Main(string[] args)
                    {
    //this works
                        var client = new TranslatorClient();            
                 var ts = client.GetTranslationAsync("suggest")
                     .ContinueWith(r =>
                                       {
                                           var transcription = r.Result.Transcription;
                                           Console.OutputEncoding = Encoding.Unicode;
                                           Console.WriteLine(transcription);
                                           Console.WriteLine("press any key");
                                           Console.ReadKey();
                                       }
                         );
                ts.Wait();
        }
        }
    
    class Program {
        static void Main( string[ ] args ) {
            Console.OutputEncoding = Encoding.Unicode;
            Console.WriteLine( "səˈdʒest" );
        }
    }