caracteres de controle de nova linha em conjuntos de caracteres multi-byte

votos
3

Eu tenho algum código Perl que traduz novas linhas e linha alimentações para uma forma normalizada. O texto de entrada é japonês, de modo que não haverá caracteres multi-byte.

Ainda é possível fazer essa transformação em uma base byte a byte (que eu acho que faz atualmente), ou eu tenho para detectar o conjunto de caracteres e ativar o suporte a Unicode? Em outras palavras, são as codificações populares (Shift-JIS, EUC-JP, UTF-8, ISO-2022-JP) usando bytes como parte de seu conjunto de caracteres que poderia ser confundido com caracteres de controle ASCII?

Eu só precisa de CR e LF para trabalhar.

Update: Adicionado ISO-2022-JP. E isso é o que parece ser o mais problemático, com suas seqüências de escape funk ...

Publicado 07/04/2009 em 06:33
fonte usuário
Em outras línguas...                            


4 respostas

votos
4

Nenhum dos 4 codificações que você menciona (Shift-JIS, UTF-8, EUC-JP, ISO-2022-JP) usar o CR ou caractere LF dentro caracteres japoneses. Para UTF-8 e JP-EUC, não existe qualquer sobreposição entre qualquer caracteres ASCII baixas e bytes dentro de caracteres japoneses. No entanto, para Shift-JIS e ISO-2022-JP, há uma sobreposição, mas não na faixa onde você encontra CR e LF.

For ISO-2022-JP,
First-byte range: 0x21 - 0x7E
Second-byte range: 0x21 - 0x7E

E os caracteres de sequência de escape para alternar entre os vários conjuntos de caracteres são:

0x1B, 0x28, 0x24, 0x40, 0x42, and 0x4A

Como se pode ver, nenhum dos caracteres utilizados para codificar os caracteres japoneses na norma ISO-2022-JP sobrepõem com CR ou LF.

For Shift-JIS,
First-byte range: 0x81 - 0x9F, 0xE0 - 0xEF
Second-byte range: 0x40 - 0x7E, 0x80 - 0xFC
Half-width katakana: 0xA1 - 0xDF

Mais uma vez, não há sobreposição com CR e LF.

Respondeu 08/04/2009 em 20:47
fonte usuário

votos
4

Todos esses conjuntos de caracteres são idênticos aos ASCII para os primeiros pontos 128 do código - ou seja, eles só usam um byte para codificar caracteres ASCII, incluindo CR (0x0D) e LF (0x0A). Você não deve ter qualquer problema.

Respondeu 07/04/2009 em 07:37
fonte usuário

votos
1

ISO-2022-JP utiliza shift-in / Shift-Out para atribuir diferentes significados para os 94 caracteres ASCII imprimível, deixando os caracteres de controlo, incluindo CR e LF intocado.

Respondeu 07/04/2009 em 15:11
fonte usuário

votos
0

Aqui está o detalhe (normativa) na codificação UTF-8: «[...] os valores 0x00..0x7F não aparecem em qualquer byte para a representação de qualquer outro ponto de código Unicode [...].» - de «A Unicode® Padrão - Versão 11.0 - core Specification »- junho 2018 - https://www.unicode.org/versions/Unicode11.0.0/UnicodeStandard-11.0.pdf

Respondeu 30/01/2019 em 18:21
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more