forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Основной форум (http://forum.boolean.name/forumdisplay.php?f=49)
-   -   А МР кирилицу выводит? (http://forum.boolean.name/showthread.php?t=3190)

kolyacher 20.04.2007 10:26

А МР кирилицу выводит?
 
Помогите плиз!!!
Я на МР пытался вывести из ресурс файла текст на кирилице, в итоге выскакивают белые квадратики...
P.S. текст забивал в самом МР...
Заранее спасибо!!!

ViNT 20.04.2007 11:54

Re: А МР кирилицу выводит?
 
j2me понимает только UTF-8 можно набрать в Блокноте а при сохранении поставить кодировку UTF-8

kolyacher 20.04.2007 14:18

Re: А МР кирилицу выводит?
 
Спасибо конечно, но я это и так знаю... :) Тем более я в МР набирал текст, но проблема в том, что, не MidpX, не Motorola SDK, не телефон его в нормальном виде не выводят... :(

mrsandy 20.04.2007 15:36

Re: А МР кирилицу выводит?
 
IMHO юзай сначала поиск а потом спрашивай >>:(
перед выводом конвертируй строку из win в utf таким вот макаром
Код:

function Str2UTF8(s: string):string;
var i: integer; a : string;
begin
a:='';
for i:= 0 to Length(s) do
if GetChar(s, i) > '~' then a:= a + Chr(Ord(GetChar(s, i)) - 64432)
else a:= a + GetChar(s, i);
Str2UTF8:= Copy(a, 0, Length(a)-1);
end;


kolyacher 24.04.2007 18:03

Re: А МР кирилицу выводит?
 
Эффект другой, но не намного лучше, кирилицу не выводит...

Piligrim 25.04.2007 11:22

Re: А МР кирилицу выводит?
 
это что за телефон такой? локаль хоть русская стоит?

kolyacher 26.04.2007 14:18

Re: А МР кирилицу выводит?
 
Русская... Я и от эмуляторов добиться ничего не могу :(
Задаю просто строку, всё нормально...
Но из файла читает как попало...

Вот код...
program NewProject3;

var
res:resource;
st:string;

function Str2UTF8(s: string):string;

var
i:integer;
a:string;
begin
a:='';
for i:= 0 to Length(s) do
if GetChar(s, i) > '~' then a:= a + Chr(Ord(GetChar(s, i)) - 64432)
else a:= a + GetChar(s, i);
Str2UTF8:= Copy(a, 0, Length(a)-1);
end;

begin
res:=OpenResource('/data.txt');
st:=ReadLine(res);
st:=Str2UTF8(st);
drawText(st,0,0);
repaint;
delay(5000);
end.

P.S. data.txt набран в MP и содержит: Привет ВСЕМ!!!

Piligrim 26.04.2007 18:51

Re: А МР кирилицу выводит?
 
в МР файлы как раз и набираются в UTF8

kolyacher 28.04.2007 06:37

Re: А МР кирилицу выводит?
 
Цитата:

Сообщение от pilgrim
в МР файлы как раз и набираются в UTF8

Я знаю, но в эмуляторе квадратики отображаются... Если просто вывожу текст с помощью drawText или на форму то кирилица выводится нормально...:(

kolyacher 28.04.2007 10:10

Re: А МР кирилицу выводит?
 
Это гон какой то...

Записываю в data.txt символ "а"

пишу код...

for i:=0 to 66000 do
if Chr(Ord(GetChar(st, i))-i)='а' then
begin
st:=integerToString(i);
drawText(st,0,j);
j:=j+10;
end;


Выдает 64464...

Ставлю вместо i 64464 Выводит далеко не а??? :''((

Magus 28.04.2007 19:55

Re: А МР кирилицу выводит?
 
kolyacher
Ты вроде тут счетчик цикла запихиваешь в st и потом st выводишь.
Тебе надо выводить, насколько я понимаю, GetChar(st,i), а не само i.
Вот только присваивать это строке st я бы не рекомендовал...

Хотя я могу ошибаться.

kolyacher 30.04.2007 12:44

Re: А МР кирилицу выводит?
 
Цитата:

Сообщение от kolyacher
Это гон какой то...

Записываю в data.txt символ "а"

пишу код...

for i:=0 to 66000 do
if Chr(Ord(GetChar(st, i))-i)='а' then
begin
st:=integerToString(i);
drawText(st,0,j);
j:=j+10;
end;


Выдает 64464...

Ставлю вместо i 64464 Выводит далеко не а??? :''((

Извините!!! Здесь я прогнал...
Надо if Chr(Ord(GetChar(st, 1))-i)='а' then вместо if Chr(Ord(GetChar(st, i))-i)='а' then, тогда рулит выдаёт 64384, выводит 'а'...
Только со строкой проблемы... Не все символы нормальные???
Пхоже i для разных символов разное...

kolyacher 02.05.2007 08:48

Re: А МР кирилицу выводит?
 
Не все так плохо как я думал... :-) 64384 годиться для первых а..п, ё выпадает; для остальных и ё 64320. Заглавные не юзал, выводил по символьно, в строку лезет как неправильно...:wallbash:

kolyacher 03.05.2007 18:43

Re: А МР кирилицу выводит?
 
Накатал процедурку может немного странной покажется, но у меня работает... :-)

function StrToUtf8(s:string):string;
var
i,j:integer;
a:string;
begin
a:='';
for i:=1 to length(s)-1 do
begin
j:=ord(GetChar(s,i));
if ((j>65438 )and(j<65456))or((j>65455)and(j<65472))or((j>65423 )and(j<65439)) then a:=a+chr(j-64384)
else if (j=65425)or((j>65407)and(j<65424)) then a:=a+chr(j-64320)
else if j=65488 then
begin
a:=a+chr(j-65456);
i:=i-1;
end
else
begin
a:=a+chr(j);
i:=i-1;
end;
i:=i+1;
end;
StrToUtf8:=a;
end;

Одно "НО" После русских букв перед знаками препинания надо ставить пробел...


Часовой пояс GMT +4, время: 20:43.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot