Модератор: Модераторы
Attid писал(а):окружение у меня utf8
lazarus запускается скриптом с локалью 1251
...
где грабли ?
function uiconv(ic_usr:pointer; source:ansistring):ansistring ;
function uiconv_open(ic_from, ic_to:ansistring):pointer ;
//здесь ic_from будет CP1251(DEV_CODESET) ic_to - UTF8(GEtCodeset)
procedure uiconv_close(ic_usr:pointer) ;
Случайно опция компилятора "-Fcutf8" при сборке проекта не нужна ? Только с этой опцией строковые константы в кодировке UTF8, вписанные прямо в коде
cConst = 'пример констанкты';
uconst.pas(33,16) Error: Malformed UTF-8 string
uconst.pas(33,16) Error: UTF-8 code greater than 65535 found
uconst.pas(33,16) Error: Malformed UTF-8 string
uconst.pas(33,16) Error: Malformed UTF-8 string
код :
WriteLn('GetCodeset()',GetCodeset());
writeln('Бла бла бла');
writeln(Localize('Бла бла бла'));
*****
initialization
{$I fdesk.lrs}
LocalizeForm('TfmDesk');
*****
$ LANG=ru_RU.cp1251 ./acdesk
GetCodeset()CP1251
��� ��� �
��� ��� �
###на форме все по русски
$ LANG=ru_RU.UTF-8 ./acdesk
GetCodeset()UTF-8
��� ��� �
Бла бла бла
###на форме кракозяки
Attid писал(а):Случайно опция компилятора "-Fcutf8" при сборке проекта не нужна ? Только с этой опцией строковые константы в кодировке UTF8, вписанные прямо в коде
не понятная опция у меня не нее очень сильно ругается
при {$DEFINE DC_WIN} теперь запускается нормально под IDE
и без ошибки без IDE (исправил ошибки с локалями в системе)
но запускается с крокозяками
Attid писал(а):при {$DEFINE DC_WIN} теперь запускается нормально под IDE
и без ошибки без IDE (исправил ошибки с локалями в системе)
но запускается с крокозяками
в консоль все выводится нормально
кракозяки напоминают открытие ЮТФ файла в 1251 !
хотя опять же могут быть глюки дистрибутива.
Attid писал(а):ЗЫ а добавить локаль это всего одна строчка ;)
Какая:?
localedef -c -i ru_RU -f cp1251 ru_RU.cp1251
s:String;
/////////////////////
if s = 'А' then
s := 'а';
if s = 'Б' then
s := 'б';
if s = 'В' then
s := 'в';
if s = 'Г' then
s := 'г';
s:=Edit1.Text;//А - кириллица
s:=s[1]+s[2];
if s='А' then ss:='а';
Label1.Caption:=ss;//а -кириллица
Владимир писал(а):но что изменилось?
Владимир писал(а):UTF8 - двухбайтовая кодировка
Var
s, s1: string;
Begin
s:='Карацупа';
WriteLn(s);
Writeln;
Write(s[1]);
Write(s[2]);
WriteLn;
s1:=s[1]+s[2];
If s1='К' Then
Begin
s1:='к';
WriteLn(s1)
End
Else
WriteLn(s1);
end.
Vadim писал(а):Как видно, теперь в массиве символов 1 символ - это именно 2 байта (s[1] и s[2]), а не один, как это было раньше или как это есть сейчас для латиницы. Т.е. всё очевидно и понятно.
Снег Север писал(а):Владимир, давным давно добавлены UTF8UpperCase и аналогичные функции работы с UTF8. В модуле lazutf8
Seenkao писал(а):Там все символы LongWord. И переводите себе на здоровье из UTF8 в Unicode и обратно, если есть желание.
Снег Север писал(а):Владимир, давным давно добавлены UTF8UpperCase и аналогичные функции работы с UTF8. В модуле lazutf8.
Владимир писал(а):Спасибо, но в 2.0.10 не работает с кириллицей.
procedure TForm1.Button1Click(Sender: TObject);
begin
label1.Caption:=UTF8UpperCase(Edit1.Text);
end;
Vadim писал(а):Да вроде работает...
О как! В новом проекте заработало... Спасибо! Разбираюсь со старым.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6