Kodowanie polskich znaków w Unicode - Assembler.

0

Witam.

Mam mały problem ze zrozumieniem kodowania polskich znaków. Dla przykładu litera "ż" w Unicode wygląda tak:
017Ch a w UTF-8: C5h BCh. W programie "definiuje" sobie coś takiego:

db 'z',0,'a',0,'k',0,0,0

Czyli słowo żak. Jak zakodować literę "ż" na dwóch bajtach(zamiast 'z',0) ? Tekst jest wyświetlany za pomocą funkcji _MessageBox@16. Dodam, że poprawna odpowiedź to 07Ch,001h lecz nie za bardzo wiem skąd się to wzięło :(

Pozdrawiam i proszę o pomoc.

0

Po pierwsze - zmień DB na DW i wywal zera spomiędzy liter.

W Nasm jest makro utf16 do tego, wymaga argumentu zakodowanego w uft8:

dw __utf16__("żak"),0

Przełączasz edytor kodu w kodowanie utf8, wklepujesz ogonki, kompilujesz, a w pliku .obj pojawia się 7C 01 na miejscu litery ż.
Użyj notatnika do zmiany kodowania na utf8, jeżeli nie masz nic innego.

0

w Unicode wygląda tak: 017Ch

poprawna odpowiedź to 07Ch,001h lecz nie za bardzo wiem skąd się to wzięło

z tego, że wartość 017Ch (380 dziesiętnie) zapisywana jest jako dwa bajty, kolejno 7Ch i 01h.

http://pl.wikipedia.org/wiki/Kolejność_bajtów

dlatego zapis

dw 017Ch

na x86 jest równoważny z

db 7Ch, 01h

1 użytkowników online, w tym zalogowanych: 0, gości: 1