Форум: "Основная";
Текущий архив: 2008.02.17;
Скачать: [xml.tar.bz2];
ВнизUnicode, UTF8 Найти похожие ветки
← →
readline(); (2007-08-28 17:44) [0]Сижу читаю инфу по поводу юникода, но наткнулся вот в сети на некоторый код, который перобразует UTF8 в Ansi строку -- функция UTF8ToStrSmart. Но я не понимаю смысл этой функции, зачем она нужна?
Почему просто не воспользоваться стандартной UTF8Decode? Есть кике-то подводные камни? раз есть ещё и такой способ, как ниже.{Convert string from UTF-8 format into ASCII}
function UTF8ToStr(Value: String): String;
var
buffer: Pointer;
BufLen: LongWord;
begin
BufLen := Length(Value) + 4;
GetMem(buffer, BufLen);
FillChar(buffer^, BufLen, 0);
MultiByteToWideChar(CP_UTF8, 0, @Value[1], BufLen - 4, buffer, BufLen);
Result := WideCharToString(buffer);
FreeMem(buffer, BufLen);
end;
{Convert string from UTF-8 format mixed with standart ASCII symbols($00..$7f)}
function UTF8ToStrSmart(Value: String): String;
var
Digit: String;
i: Word;
HByte: Byte;
Len: Byte;
begin
Result := "";
Len := 0;
if Value = "" then Exit;
for i := 1 to Length(Value) do
begin
if Len > 0 then
begin
Digit := Digit + Value[i];
Dec(Len);
if Len = 0 then
Result := Result + UTF8ToStr(Digit);
end else
begin
HByte := Ord(Value[i]);
if HByte in [$00..$7f] then //Standart ASCII chars
Result := Result + Value[i]
else begin
//Get length of UTF-8 char
if HByte and $FC = $FC then
Len := 6
else if HByte and $F8 = $F8 then
Len := 5
else if HByte and $F0 = $F0 then
Len := 4
else if HByte and $E0 = $E0 then
Len := 3
else if HByte and $C0 = $C0 then
Len := 2
else begin
Result := Result + Value[i];
Continue;
end;
Dec(Len);
Digit := Value[i];
end;
end;
end;
end;
← →
Vendict © (2007-08-29 13:58) [1]readline(); (28.08.07 17:44)
Почему просто не воспользоваться стандартной UTF8Decode? Есть кике-то подводные камни? раз есть ещё и такой способ, как ниже.
может некоторым не охота нагружать свой ехе-шник лишними бибилиотеками. подводных камней нет, так как я такую же функцию использую на перле, хотя переделывал её из php.
← →
tesseract © (2007-08-30 16:42) [2]
> Почему просто не воспользоваться стандартной UTF8Decode?
> Есть кике-то подводные камни? раз есть ещё и такой способ,
> как ниже.
У кого-то гемморой зарос, решил поправить. Кто тебе сказал, что у клиента стоит именно такая кодировка ?
← →
CyberPunk (2007-11-11 18:13) [3]Лично у меня UTF8Decode не пахал в проге... отлично заработала UTF8ToStrSmart... Я долго искал что нить подобное этой функции....
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2008.02.17;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.041 c