forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   FAQ (http://forum.boolean.name/forumdisplay.php?f=48)
-   -   Русский текст (http://forum.boolean.name/showthread.php?t=4412)

Черный Лорд 11.09.2007 17:13

Русский текст
 
Как сделать так, чтобы программа сохраняла русский текст который вводит пользователь. Я сделал но она русские буквы заменяет на знаки вопроса. Можно сохранять только англиские буквы.:"(

ViNT 11.09.2007 17:28

Re: Русский текст
 
Можно записывать коды символов разделяя их знаком "%".
Например строка "текст" закодируется как 226%165%170%225%226%.
Геморойно конечно, но сработает.
З.Ы. Код символа можно получить с помощю функции ord, символ из кода-с помощю chr.

odd 12.11.2007 08:38

Re: Русский текст
 
Та же проблема. Пытаюсь сохранить русскую строку в RecordStore - записываются только символы ? по числу букв. Конвертирование в Win1251 не помогает. Кто нибудь сталкивался с такой проблемой? Как решали? Видимо, придется в транслите хранить...

Mix6s 13.12.2007 22:11

Re: Русский текст
 
тоже долго мучился с этой проблемой вот пока искал как сделать сам допер с кодированием))

/////////////////////раскодируем
function ruen(st:string):string;
var st1,st2:string;
i,l,l2:integer;
begin
st1:='';
st2:='';
l:=length(st);
for i:=0 to l-1 do
begin
if getchar(st,i)<>'%' then st2:=st2+getchar(st,i) else
begin
st1:=st1+chr(stringtointeger(st2));
st2:='';
end;
end;
ruen:=st1;
end;
//////////////////////////////////кодируем
function enru(st:string):string;
var st1,st2:string;
i,l,l2:integer;
begin
st1:='';
st2:='';
l:=length(st);
for i:=0 to l-1 do
begin
st1:=st1+integertostring(ord(getchar(st,i)))+'%';
end;
enru:=st1;
end;

Вадим 14.12.2007 00:30

Re: Русский текст
 
function winstr (s:string):string;
var i:integer;
c: char;
tc:integer;
st:string;
begin
st:='';
for i:=0 to length(s)-1 do begin
c:=getchar(s,i);
tc:=ord(c)-848;
if (tc>191) and (tc<256) then st:=st+chr(tc) else st:=st+c;
end;
winstr:=st;
end;

function utfstr (s:string):string;
var i:integer;
c: char;
tc:integer;
st:string;
begin
st:='';
for i:=0 to length(s)-1 do begin
c:=getchar(s,i);
tc:=ord(c)+848;
if (tc>1039) and (tc<1104) then st:=st+chr(tc) else st:=st+c;
end;
utfstr:=st;
end;

Строки в хранилищах сохраняем через winstr читаем через utfstr.
Не стоит придумывать urlencode и т.п для таких простейших задач.
С буквой "Ё" решение найдёте сами всё очень просто :-D

odd 14.12.2007 08:41

Re: Русский текст
 
Стрянно. Я до этого пробовал применять перекодировку и у меня ничего не получалось, а тут пашет. Спасибо. Мне как раз надо в новом проекте сохранять русские строки в RS.

Ahsoka_Tano 23.11.2013 02:31

Ответ: Русский текст
 
Тоже сталкивался с этой проблемой

Arton 23.11.2013 08:27

Ответ: Русский текст
 
Цитата:

Сообщение от Ahsoka_Tano (Сообщение 270559)
Тоже сталкивался с этой проблемой



P. S. Сообщения набиваем'с, хорошо, а некропостием обязательно заниматься?

Igor 25.11.2013 23:11

Ответ: Русский текст
 
Да ладно вам, я когда впервые на булку зашёл, на дату сообщений вообще не смотрел...

Arton 26.11.2013 01:20

Ответ: Русский текст
 
Цитата:

Сообщение от Igor (Сообщение 270606)
Да ладно вам, я когда впервые на булку зашёл, на дату сообщений вообще не смотрел...

Дело не только в этом, человек набивал счётчик постов и вместо того что бы выложить смешную картинку он писал бессмысленные комментарии типа:
Цитата:

Сообщение от Ahsoka_Tano (Сообщение 270560)
Большое причеловеческое

Цитата:

Сообщение от Ahsoka_Tano (Сообщение 270558)
Это кошмар

P. S. Ну а если серьёзно, то пофиг...


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

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