|
|
Publicado em 13/04/2018 16:11:20
|
|
|

Hoje, quando eu estava criando um diálogo de Abrir Arquivo, precisei ler o arquivo aberto e exibi-lo na RichTextBox do formulário. No entanto, ao exibir o arquivo, foi constatado que a string chinesa exibida estava distorcida. As partes principais do código são as seguintes:
No começo, também achei que havia um problema com a codificação de caracteres, então, quando inicializei o StreamReader, adicionei os parâmetros de codificação de caracteres a ele, e adicionei várias vezes: Encoding.Unicode, Encoding.UTF32, Encoding.UTF7, Encoding.UTF8, Encoding.ASCII, tentei todos os esquemas de codificação que podiam ser adicionados, mas o resultado não foi bom.
Originalmente, o sistema operacional do Windows 2000 e posteriores usava Unicode para processamento de arquivos, então . A codificação padrão de arquivos para .Net também é Unicode. A menos que especificado de outra forma, a codificação padrão do StreamReader é Unicode, não a página de código ANSI do sistema atual. No entanto, a maioria dos documentos ainda está armazenada em codificação ANSI, e o texto chinês usa gb2312, o que causa caracteres chineses distorcidos, o que significa que o formato de codificação deve ser especificado ao ler o texto.
A solução alternativa é: System.Text.Encoding.Default informa ao StreamReader a codificação do sistema operacional atual.
|
Anterior:.net/c# Comparação de serialização de XML, Json, Hessian, Protocol BuffersPróximo:.net/c# Use o Costura.Fody para empacotar a DLL no EXE
|