-
1. Data: 2014-12-11 10:10:06
Temat: Dodawanie BOM do pliku w kodowaniu UTF-7 - jak to zrobić?
Od: s...@o...pl
Witam
Piszę edytor tekstu i chcę by obsługiwał wszystkie wersje BOM (Byte Order Mark) ze
specyfikacji Unicode. Jednak nie mogę nigdzie znaleść specyfikacji dotyczącej BOM dla
UTF-7. Na unicode.org UTF-7 jest jedynie wzmiankowany w 2 dokumentach pdf i podane są
4 możliwe kombinacje tego BOM. Na wikipedia.org jest nieco więcej i pisze tam, że
przed kodowaniem w base64 do ostatniego bajtu w postaci 001111xx na ostatnich 2
bitach dodaje się pierwsze 2 bity z pierwszego znaku. Problem w tym, że gdy doda się
te 2 bity to nie uzyska się jednej z tych wymienionych 4 wartości czwartego bajtu. A
jeśli się go zakoduje w base64 to wychodzą z tego 2 bajty a nie jeden (jeśli użyję
dla kodowania base64 flagi QByteArray::OmitTrailingEquals co znaczy: Omits adding the
padding equal signs at the end of the encoded data.).
Dla przykładu:
mam plik z taką jedną lnią:
dfassdfas
To po dodaniu 3bajtów stałych i czwartego zakodowanego w base64 bajtu 001111xx gdzie
xx to 2 bity z pierwszego znaku w tekście. Uzyskuję poniższy tekst:
+/vPQdfassdfas
czyli szesnastkowo:
2B 2F 76 50 51 64 66 61 73 73 64 66 61 73
Jak widać zamiast 4 bajtu o dopuszczalnych wartościach 38 39 2B i 2F są 2 bajty 50
51.
Moje pytanie brzmi: Gdzie popełniam błąd?
z góry dzięki za pomoc
Szyk Cech
-
2. Data: 2014-12-11 21:56:59
Temat: Re: Dodawanie BOM do pliku w kodowaniu UTF-7 - jak to zrobić?
Od: s...@o...pl
A może ktoś by mógł podpowiedzieć na jakiej anglojęzycznej grupie powinienem się
spytać?
-
3. Data: 2014-12-16 11:28:53
Temat: Re: Dodawanie BOM do pliku w kodowaniu UTF-7 - jak to zrobić?
Od: firr <p...@g...com>
W dniu czwartek, 11 grudnia 2014 10:10:07 UTC+1 użytkownik s...@o...pl napisał:
> Witam
> Piszę edytor tekstu i chcę by obsługiwał wszystkie wersje BOM (Byte Order Mark) ze
specyfikacji Unicode. Jednak nie mogę nigdzie znaleść specyfikacji dotyczącej BOM dla
UTF-7. Na unicode.org UTF-7 jest jedynie wzmiankowany w 2 dokumentach pdf i podane są
4 możliwe kombinacje tego BOM. Na wikipedia.org jest nieco więcej i pisze tam, że
przed kodowaniem w base64 do ostatniego bajtu w postaci 001111xx na ostatnich 2
bitach dodaje się pierwsze 2 bity z pierwszego znaku. Problem w tym, że gdy doda się
te 2 bity to nie uzyska się jednej z tych wymienionych 4 wartości czwartego bajtu. A
jeśli się go zakoduje w base64 to wychodzą z tego 2 bajty a nie jeden (jeśli użyję
dla kodowania base64 flagi QByteArray::OmitTrailingEquals co znaczy: Omits adding the
padding equal signs at the end of the encoded data.).
> Dla przykładu:
> mam plik z taką jedną lnią:
> dfassdfas
> To po dodaniu 3bajtów stałych i czwartego zakodowanego w base64 bajtu 001111xx
gdzie xx to 2 bity z pierwszego znaku w tekście. Uzyskuję poniższy tekst:
> +/vPQdfassdfas
> czyli szesnastkowo:
> 2B 2F 76 50 51 64 66 61 73 73 64 66 61 73
> Jak widać zamiast 4 bajtu o dopuszczalnych wartościach 38 39 2B i 2F są 2 bajty 50
51.
>
> Moje pytanie brzmi: Gdzie popełniam błąd?
>
>
popatrzylem na to troche 9w wiki i na jakiejs stronce) ale szczerze mowiac
nie bardzo zrozumialem jak to kodowanie zachodzi -
brany jest bitowy zapis utf-8 i po prostu dzielony na porce 7 bitow? 6 bitow?
czy tez moze ten oryginalny bitowy zapis
(jesli jest cos takiego bo troche sie pogubilem, mam na mysli te wartosci bez tych
znacznikowych bitow sa jakos upychane, jakbym nie patrzyl
cos tu sie nie zgadza ;o