Atualizar:

Atualizar:

Sabemos que existe um aplicativo chamado AppLocale, que pode alterar a página de código de aplicativos não Unicode, para resolver problemas de exibição de texto.

Mas existe um programa cujopágina de código de exibição direitaé UTF-8, o que significaseu texto deve ser mostrado como UTF-8, mas em vez disso Windowsexibe-o como a página de código nativae torna o texto ilegível. Parece engraçado, porque existem quase todos os países e regiões, mas sem UTF-8. Eu acho que é um bug, porque os programadores podem usar o inglês e ignorar os testes de problemas de exibição de texto em idiomas diferentes do inglês. Não acho que o produtor vá consertar isso e eu quero consertar sozinho.

É possível definir a saída não Unicode como UTF-8 usando software como AppLocale? A saída não Unicode padrão é uma página de código nativa? Como posso definir a página de código nativa para UTF-8?

Responder1

Anteriormente não era possível porque

A Microsoft alegou que um código de idioma UTF-8 pode quebrar algumas funções (um possível exemplo é _mbsrev), pois elas foram escritas para assumir que codificações multibyte não usavam mais do que 2 bytes por caractere, portanto, até agora, páginas de código com mais bytes, como GB 18030 (cp54936) e Não foi possível definir UTF-8 como localidade.

https://en.wikipedia.org/wiki/Unicode_in_Microsoft_Windows#UTF-8

Contudo há um"Beta: Use Unicode UTF-8 para suporte a idiomas em todo o mundo"caixa de seleção desde a versão 17035 do Windows 10 Insider para definir a página de código de localidade como UTF-8

Beta: Use Unicode UTF-8 para suporte a idiomas em todo o mundo

Veja também

Dito isto, o suporte ainda apresenta erros neste momento


Atualizar:

A Microsoft também adicionou a capacidade de os programas usarem o código de idioma UTF-8 sem sequer definir o sinalizador UTF-8 beta acima. Você pode usar o/execution-charset:utf-8ou/utf-8opções ao compilar com MSVC ou definir a propriedade ActiveCodePage em appxmanifest

Você também pode usar a localidade UTF-8 em versões mais antigas do Windows vinculando-se ao tempo de execução C apropriado

A partir do Windows 10 build 17134 (atualização de abril de 2018), o Universal C Runtime dá suporte ao uso de uma página de código UTF-8. Isso significa que charas strings passadas para funções de tempo de execução C esperarão strings na codificação UTF-8. Para ativar o modo UTF-8, use "UTF-8" como página de código ao usar setlocale. Por exemplo, setlocale(LC_ALL, ".utf8")usará a página de código ANSI (ACP) padrão atual do Windows para a localidade e UTF-8 para a página de código.

...

Para usar esse recurso em um sistema operacional anterior ao Windows 10, como o Windows 7, você deve usarimplantação local do aplicativoou vincule estaticamente usando a versão 17134 do Windows SDK ou posterior. Para sistemas operacionais Windows 10 anteriores a 17134, somente a vinculação estática é suportada.

Suporte UTF-8

Responder2

Pelo que li sobre a MicrosoftFerramenta AppLocale na Wikipedia, a ferramenta NÃO poderá alterar sua página de código para UTF-8.Funciona apenas com aplicativos não Unicode, mas UTF-8 faz parte do padrão Unicode.

Nos bastidores, o processamento Unicode de caracteres não-ASCII difere muito do não-Unicode, portanto, embora seja possível alternar entre páginas de código não-Unicode (isso é o que o AppLocale faz), NÃO é possível alterar entre páginas de código Unicode e não-Unicode. Unicode sem modificação da aplicação feita pelo seu produtor.

Responder3

Só para mencionar aqui: no Windows 10 17133 agora existe uma opção beta para usar UTF-8 para suporte mundial. Mas isso não ajuda com programas não-Unicode no momento, mas é colocado no pop-up onde posso alterar a localidade dos programas não-Unicode.

Então, talvez eles estejam trabalhando em algo para acabar com a necessidade de alterar a localidade de programas não-Unicode.

informação relacionada