Go を使用して Windows コンソールで Unicode 文字列を正しく出力する
Windows コンソールで特殊文字を含む UTF-8 文字列を出力する Go 実行可能ファイルを使用する場合Windows では、Windows のデフォルトの IBM850 エンコーディングが原因で出力が破損する場合があります。このエンコーディングの不一致により、文字がスクランブルされて読めなくなる可能性があります。
適切な出力を保証するには、Unicode 文字列を正しく処理するメソッドを採用する必要があります。 1 つのアプローチは、Windows の kernel32.dll によって提供される文書化されていないメソッド WriteConsoleW を利用することです。
次の Go コードは、Windows コンソールで Unicode 文字列を正しく出力する方法を示しています。
<code class="go">import ( "sync/atomic" "time" ) func main() { handler := func(text []byte) { var prev []byte for { select { case s := <-strCh: if eq(prev, s) { atomic.AddUint64(&skips, 1) continue } time.Sleep(delay) prev = s r.add(s) default: time.Sleep(pollingDelay) } } } for i := 0; i < threads; i++ { go handler(data) } time.Sleep(timeout + 2e9) close(strCh) time.Sleep(2e9) m.printTotal(&report) }</code>
この中でscript:
最終的な統計は、次を使用して出力されます。 printTotal メソッド。
以上がGo を使用して Windows コンソールで Unicode 文字列を正しく出力するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。