Zmiana kodowania stron (obsługa wielu kodowań i unicode!)

0

Witam
piszę swój pierwszy w życiu edytor stron, i chciałbym dodać do niego obsługę wielu kodowań. Jak na razie, odbywa się to na tej zasadzie:

plik jest wczytywany -> szukany jest tag meta -> jeśli został znaleziony, znamy już kodowanie pliku -> jeśli nie został znaleziony, szukamy charakterystycznych znaków

zakładając że po całej operacji znam już kodowanie pliku, program zamienia (zwykłe ReplaceString) odpowiednie znaki (na razie wyłącznie polskie) z kodowania pliku do kodowania WINDOWS 1250

Przy zapisie odwrotnie - z WINDOWS 1250 do kodowania źródłowego.

Moje pytanie jest następujące:
czy znacie jakieś gotowe biblioteki, przykłady albo coś co umożliwiałoby konwertowanie między wieloma kodowaniami, z uwzględnieniem UTF8 i ew. UTF16???
Proszę o pomoc bo już wymiękam, zwłaszcza z UTF16 ;( :(:(

0

iconv

0
nav napisał(a)

iconv

znalazłem że w delphi można używać tego "iconv" dzięki DIConverters ... ale nie ma żadnego przykładu ani nic :((

0

ściągnij sobie synapse - masz tam moduł do konwertowania między stronami kodowymi (synachar)

Lista obsługiwanych kodowań

{:Type with all supported charsets.}
TMimeChar = (ISO_8859_1, ISO_8859_2, ISO_8859_3, ISO_8859_4, ISO_8859_5,
ISO_8859_6, ISO_8859_7, ISO_8859_8, ISO_8859_9, ISO_8859_10, ISO_8859_13,
ISO_8859_14, ISO_8859_15, CP1250, CP1251, CP1252, CP1253, CP1254, CP1255,
CP1256, CP1257, CP1258, KOI8_R, CP895, CP852, UCS_2, UCS_4, UTF_8, UTF_7,
UTF_7mod, UCS_2LE, UCS_4LE,
//next is supported by Iconv only...
UTF_16, UTF_16LE, UTF_32, UTF_32LE, C99, JAVA, ISO_8859_16, KOI8_U, KOI8_RU,
CP862, CP866, MAC, MACCE, MACICE, MACCRO, MACRO, MACCYR, MACUK, MACGR, MACTU,
MACHEB, MACAR, MACTH, ROMAN8, NEXTSTEP, ARMASCII, GEORGIAN_AC, GEORGIAN_PS,
KOI8_T, MULELAO, CP1133, TIS620, CP874, VISCII, TCVN, ISO_IR_14, JIS_X0201,
JIS_X0208, JIS_X0212, GB1988_80, GB2312_80, ISO_IR_165, ISO_IR_149, EUC_JP,
SHIFT_JIS, CP932, ISO_2022_JP, ISO_2022_JP1, ISO_2022_JP2, GB2312, CP936,
GB18030, ISO_2022_CN, ISO_2022_CNE, HZ, EUC_TW, BIG5, CP950, BIG5_HKSCS,
EUC_KR, CP949, CP1361, ISO_2022_KR, CP737, CP775, CP853, CP855, CP857,
CP858, CP860, CP861, CP863, CP864, CP865, CP869, CP1125);

0

@Misiekd:: fajny nawet ten unit, i konwertuje ładnie, ale jest jedno ALE ... :(

Chciałem przekonwertować tekst na ISO (z polskimi znaczkami) i wyszło coś takiego:
http://pastebin.4programmers.net/1072

var
s: TTNTStringList;
begin
s:= TTNTStringList.Create();
s.text:=CharsetConversion(Memo1.Text, GetCurCP, UTF_8);
s.SaveToFile('a.html');
s.Free;

Kod niby OK ...
GetCurCP zwraca CP_1250 czyli OK...

0

MisiekD

Masz może coś dla ISO 6937?
Nigdzie w delphi nie spotkałem konwersji z tego formatu.

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