Istnieje chiński znak przedstawiony w UTF-8 jako F0 A4 AD A2. Ta postać jest opisana tutaj: http://en.wikipedia.org/wiki/UTF-8C#: bajty na konwersję ciągów UTF-8. Dlaczego to nie działa?
U + 24B62 F0 A4 AD A2
Kiedy uruchomić ten kod w C#...
byte[] data = { 0xF0, 0xA4, 0xAD, 0xA2 };
string abc = Encoding.UTF8.GetString(data);
Console.WriteLine("Test: description = {0}", abc);
... I przekierować wyjście do plik tekstowy, a następnie otwórz go przy pomocy notepad.exe, wybierając kodowanie UTF-8. Spodziewam się uzyskać wynik, ale otrzymuję dwa znaki zapytania (??).
Sekwencja bajtów ma rację. Działa w Perlu:
print "\xF0\xA4\xAD\xA2";
W wyjściu otrzymuję
Więc moje pytanie brzmi: dlaczego mam „??” zamiast "" w C#?
P.S. Nic specjalnego z tą postacią: Mam to samo dla każdej postaci (2, 3 lub 4 bajty).
W przypadku Perl, by „na wyjściu” masz na myśli przekierować dane wyjściowe do pliku tekstowego i otwórz go w notatniku? – yoozer8
Musisz upewnić się, że piszesz do pliku przy użyciu kodowania UTF8. Czy możesz umieścić kod do zapisu w pliku? –
Jakiś konkretny powód, dla którego nie możesz korzystać z plików? Konsola i Unicode są nieco bolesne. Oleksandr Pshenychnyy odpowiedź (+1) może ci w tym pomóc ... –