ViruZ
вопрос не понятен =) текущию в которой запущено приложение ?
тогда через переменую окружения LANG.
Модератор: Модераторы
uses
{$ifdef FPC}{$ifdef linux}cthreads,baseunix,{$endif}{$endif}
begin
{$ifdef linux}
if fpGetenv('LANG') <> 'ru_RU.UTF-8' then
begin
Writeln ('Bad locale ',fpGetenv('LANG'),' set it to ru_RU.UTF-8');
halt;
end;
{$endif}
end.
fpGetenv
function Wide2Utf(const S:WideString):UtfString;
var I,J,L:Integer; U:Unicode;
begin
SetLength(Result,Length(S));
J:=1;
for I:=1 to Length(S) do begin
U:=Unicode(S[1]);
L:=LengthUnicode(U);
IncLen(Result,J,Length(S),I,L,Length(S) div 2 + 6);
inc(J,Uni2Utf(@Result[J],U,L));
end;
SetLength(Result,J-1);
end;
lang := GetEnv('LC_ALL');
if Length(lang)=0 then begin
lang := GetEnv('LC_MESSAGES');
if Length(lang)=0 then begin
lang := GetEnv('LANG');
if Length(lang)=0 then exit;
end;
end;
function TCodeChanger.DosToUtf8(var Text: string): boolean;
var InString, OutString, b: string;
i, Len: integer;
c: byte;
a: Char;
begin
Result:=true;
InString:=Text; OutString:='';
Len:=Length(InString);
try
b:=#239#187#191; OutString:=OutString+b;
for i:=1 to Len do begin
a:=InString[i];
c:=Ord(a);
case c of
{a english} 97: b:=#97; 98: b:=#98; 99: b:=#99; 100: b:=#100; 101: b:=#101; 102: b:=#102; 103: b:=#103; 104: b:=#104; 105: b:=#105; 106: b:=#106; 107: b:=#107; 108: b:=#108; 109: b:=#109; 110: b:=#110; 111: b:=#111; 112: b:=#112; 113: b:=#113; 114: b:=#114; 115: b:=#115; 116: b:=#116; 117: b:=#117; 118: b:=#118; 119: b:=#119; 120: b:=#120; 121: b:=#121; 122: b:=#122;
{A english} 65: b:=#65; 66: b:=#66; 67: b:=#67; 68: b:=#68; 69: b:=#69; 70: b:=#70; 71: b:=#71; 72: b:=#72; 73: b:=#73; 74: b:=#74; 75: b:=#75; 76: b:=#76; 77: b:=#77; 78: b:=#78; 79: b:=#79; 80: b:=#80; 81: b:=#81; 82: b:=#82; 83: b:=#83; 84: b:=#84; 85: b:=#85; 86: b:=#86; 87: b:=#87; 88: b:=#88; 89: b:=#89; 90: b:=#90;
{0..9} 48: b:=#48; 49: b:=#49; 50: b:=#50; 51: b:=#51; 52: b:=#52; 53: b:=#53; 54: b:=#54; 55: b:=#55; 56: b:=#56; 57: b:=#57;
{Ñïåö ñèìâîëû} 33: b:=#33; 13: b:=#13; 9: b:=#9; 10: b:=#10; 32: b:=#32; 64: b:=#64; 35: b:=#35; 36: b:=#36; 37: b:=#37; 94: b:=#94; 38: b:=#38; 42: b:=#42; 40: b:=#40; 41: b:=#41; 45: b:=#45; 95: b:=#95; 43: b:=#43; 61: b:=#61; 92: b:=#92; 47: b:=#47; 124: b:=#124; 46: b:=#46; 44: b:=#44; 59: b:=#59; 58: b:=#58; 123: b:=#123; 125: b:=#125; 63: b:=#63; 60: b:=#60; 62: b:=#62; 34: b:=#34; 91: b:=#91; 93: b:=#93; 96: b:=#96; 126: b:=#126; 252: b:=#223;
{à ðóññêèå} 160: b:=#208#176; 161: b:=#208#177; 162: b:=#208#178; 163: b:=#208#179; 164: b:=#208#180; 165: b:=#208#181; 166: b:=#208#182; 167: b:=#208#183; 168: b:=#208#184; 169: b:=#208#185; 170: b:=#208#186; 171: b:=#208#187; 172: b:=#208#188; 173: b:=#208#189; 174: b:=#208#190; 175: b:=#208#191; 224: b:=#209#128; 225: b:=#209#129; 226: b:=#209#130; 227: b:=#209#131; 228: b:=#209#132; 229: b:=#209#133; 230: b:=#209#134; 231: b:=#209#135; 232: b:=#209#136; 233: b:=#209#137; 234: b:=#209#138; 235: b:=#209#139; 236: b:=#209#140; 237: b:=#209#141; 238: b:=#209#142; 239: b:=#209#143; 241: b:=#209#145;
{À ðóññêèå} 128: b:=#208#144; 129: b:=#208#145; 130: b:=#208#146; 131: b:=#208#147; 132: b:=#208#148; 133: b:=#209#149; 134: b:=#208#150; 135: b:=#208#151; 136: b:=#208#152; 137: b:=#208#153; 138: b:=#208#154; 139: b:=#208#155; 140: b:=#208#156; 141: b:=#208#157; 142: b:=#208#158; 143: b:=#208#159; 144: b:=#208#160; 145: b:=#208#161; 146: b:=#208#162; 147: b:=#208#163; 148: b:=#208#164; 149: b:=#208#165; 150: b:=#208#166; 151: b:=#208#167; 152: b:=#208#168; 153: b:=#208#169; 154: b:=#208#170; 155: b:=#208#171; 156: b:=#208#172; 157: b:=#208#173; 158: b:=#208#174; 159: b:=#208#175; 240: b:=#208#129;
end;
OutString:=OutString+b
end;
Text:= OutString
except
Result:=false
end;
end;
VAR
f: TextFile;
s: string;
ArrStr: array of string;
iCou: integer;
BEGIN
AssignFile(f, 'any.file');
Reset(f);
while not Eof(f) do
BEGIN
Readln(f, s);
iCou := length(ArrStr);
SetLength(ArrStr, succ(iCou));
ArrStr[iCou] := s;
END;
CloseFile(f);
END;
program printcodes;
{$mode objfpc}{$H+}
uses
Classes, SysUtils;
var fin: file of Char;
fout : Text;
i: Byte;
c,c1: Char;
begin
AssignFile(fin,'oem8.txt');
Reset(fin);
AssignFile(fout,'out.txt');
Rewrite(fout);
Read(fin,c);
Read(fin,c);
Read(fin,c);
for i:=1 to 127 do begin
Read(fin,c);
Read(fin,c1);
WriteLn(fout,' ',IntToStr(i+127),':b:=#',Ord(c),'#',Ord(C1),'; //',Chr(i+127));
end;
CloseFile(fin);
CloseFile(fout);
end.
128:b:=#145#208; //А
129:b:=#146#208; //Б
130:b:=#147#208; //В
131:b:=#148#208; //Г
132:b:=#149#208; //Д
133:b:=#150#208; //Е
134:b:=#151#208; //Ж
135:b:=#152#208; //З
136:b:=#153#208; //И
137:b:=#154#208; //Й
138:b:=#155#208; //К
139:b:=#156#208; //Л
140:b:=#157#208; //М
141:b:=#158#208; //Н
142:b:=#159#208; //О
143:b:=#160#208; //П
144:b:=#161#208; //Р
145:b:=#162#208; //С
146:b:=#163#208; //Т
147:b:=#164#208; //У
148:b:=#165#208; //Ф
149:b:=#166#208; //Х
150:b:=#167#208; //Ц
151:b:=#168#208; //Ч
152:b:=#169#208; //Ш
153:b:=#170#208; //Щ
154:b:=#171#208; //Ъ
155:b:=#172#208; //Ы
156:b:=#173#208; //Ь
157:b:=#174#208; //Э
158:b:=#175#208; //Ю
159:b:=#176#208; //Я
160:b:=#177#208; //а
161:b:=#178#208; //б
162:b:=#179#208; //в
163:b:=#180#208; //г
164:b:=#181#208; //д
165:b:=#182#208; //е
166:b:=#183#208; //ж
167:b:=#184#208; //з
168:b:=#185#208; //и
169:b:=#186#208; //й
170:b:=#187#208; //к
171:b:=#188#208; //л
172:b:=#189#208; //м
173:b:=#190#208; //н
174:b:=#191#226; //о
175:b:=#150#145; //п
176:b:=#226#150; //░
177:b:=#146#226; //▒
178:b:=#150#147; //▓
179:b:=#226#150; //│
180:b:=#147#226; //┤
181:b:=#148#164; //╡
182:b:=#226#149; //╢
183:b:=#161#226; //╖
184:b:=#149#162; //╕
185:b:=#226#149; //╣
186:b:=#150#226; //║
187:b:=#149#149; //╗
188:b:=#226#149; //╝
189:b:=#163#226; //╜
190:b:=#149#145; //╛
191:b:=#226#149; //┐
192:b:=#151#226; //└
193:b:=#149#157; //┴
194:b:=#226#149; //┬
195:b:=#156#226; //├
196:b:=#149#155; //─
197:b:=#226#148; //┼
198:b:=#144#226; //╞
199:b:=#148#148; //╟
200:b:=#226#148; //╚
201:b:=#180#226; //╔
202:b:=#148#172; //╩
203:b:=#226#148; //╦
204:b:=#156#226; //╠
205:b:=#148#128; //═
206:b:=#226#148; //╬
207:b:=#188#226; //╧
208:b:=#149#158; //╨
209:b:=#226#149; //╤
210:b:=#159#226; //╥
211:b:=#149#154; //╙
212:b:=#226#149; //╘
213:b:=#148#226; //╒
214:b:=#149#169; //╓
215:b:=#226#149; //╫
216:b:=#166#226; //╪
217:b:=#149#160; //┘
218:b:=#226#149; //┌
219:b:=#144#226; //█
220:b:=#149#172; //▄
221:b:=#226#149; //▌
222:b:=#167#226; //▐
223:b:=#149#168; //▀
224:b:=#226#149; //р
225:b:=#164#226; //с
226:b:=#149#165; //т
227:b:=#226#149; //у
228:b:=#153#226; //ф
229:b:=#149#152; //х
230:b:=#226#149; //ц
231:b:=#146#226; //ч
232:b:=#149#147; //ш
233:b:=#226#149; //щ
234:b:=#171#226; //ъ
235:b:=#149#170; //ы
236:b:=#226#148; //ь
237:b:=#152#226; //э
238:b:=#148#140; //ю
239:b:=#226#150; //я
240:b:=#136#226; //Ё
241:b:=#150#132; //ё
242:b:=#226#150; //Є
243:b:=#140#226; //є
244:b:=#150#144; //Ї
245:b:=#226#150; //ї
246:b:=#128#209; //Ў
247:b:=#128#209; //ў
248:b:=#129#209; //°
249:b:=#130#209; //∙
250:b:=#131#209; //·
251:b:=#132#209; //√
252:b:=#133#209; //№
253:b:=#134#209; //¤
254:b:=#135#209; //■
function TCodeChanger.DosToUtf8(var Text: string): boolean;
var InString, OutString, b: string;
i, Len: integer;
c: byte;
a: Char;
begin
Result:=true;
InString:=Text; OutString:='';
Len:=Length(InString);
try
b:=#239#187#191; OutString:=OutString+b;
for i:=1 to Len do begin
a:=InString[i];
c:=Ord(a);
case c of
1..127:b:=chr(c);
128:b:=#208#144; //└
129:b:=#208#145; //┴
130:b:=#208#146; //┬
131:b:=#208#147; //├
132:b:=#208#148; //─
133:b:=#208#149; //┼
134:b:=#208#150; //╞
135:b:=#208#151; //╟
136:b:=#208#152; //╚
137:b:=#208#153; //╔
138:b:=#208#154; //╩
139:b:=#208#155; //╦
140:b:=#208#156; //╠
141:b:=#208#157; //═
142:b:=#208#158; //╬
143:b:=#208#159; //╧
144:b:=#208#160; //╨
145:b:=#208#161; //╤
146:b:=#208#162; //╥
147:b:=#208#163; //╙
148:b:=#208#164; //╘
149:b:=#208#165; //╒
150:b:=#208#166; //╓
151:b:=#208#167; //╫
152:b:=#208#168; //╪
153:b:=#208#169; //┘
154:b:=#208#170; //┌
155:b:=#208#171; //█
156:b:=#208#172; //▄
157:b:=#208#173; //▌
158:b:=#208#174; //▐
159:b:=#208#175; //▀
160:b:=#208#176; //р
161:b:=#208#177; //с
162:b:=#208#178; //т
163:b:=#208#179; //у
164:b:=#208#180; //ф
165:b:=#208#181; //х
166:b:=#208#182; //ц
167:b:=#208#183; //ч
168:b:=#208#184; //ш
169:b:=#208#185; //щ
170:b:=#208#186; //ъ
171:b:=#208#187; //ы
172:b:=#208#188; //ь
173:b:=#208#189; //э
174:b:=#208#190; //ю
175:b:=#208#191; //я
176:b:=#226#150; //-
177:b:=#145#226; //-
178:b:=#150#146; //-
179:b:=#226#150; //ж
180:b:=#147#226; //+
181:b:=#150#147; //ж
182:b:=#226#148; //ж
183:b:=#164#226; //м
184:b:=#149#161; //м
185:b:=#226#149; //ж
186:b:=#162#226; //ж
187:b:=#149#150; //м
188:b:=#226#149; //-
189:b:=#149#226; //-
190:b:=#149#163; //-
191:b:=#226#149; //м
192:b:=#145#226; //L
193:b:=#149#151; //+
194:b:=#226#149; //T
195:b:=#157#226; //+
196:b:=#149#156; //-
197:b:=#226#149; //+
198:b:=#155#226; //ж
199:b:=#148#144; //ж
200:b:=#226#148; //L
201:b:=#148#226; //у
202:b:=#148#180; //ж
203:b:=#226#148; //T
204:b:=#172#226; //ж
205:b:=#148#156; //=
206:b:=#226#148; //+
207:b:=#128#226; //ж
208:b:=#148#188; //ж
209:b:=#226#149; //T
210:b:=#158#226; //T
211:b:=#149#159; //L
212:b:=#226#149; //L
213:b:=#154#226; //-
214:b:=#149#148; //у
215:b:=#226#149; //+
216:b:=#169#226; //+
217:b:=#149#166; //-
218:b:=#226#149; //-
219:b:=#160#226; //-
220:b:=#149#144; //-
221:b:=#226#149; //ж
222:b:=#172#226; //ж
223:b:=#149#167; //-
224:b:=#226#149; //Ё
225:b:=#168#226; //ё
226:b:=#149#164; //Є
227:b:=#226#149; //є
228:b:=#165#226; //Ї
229:b:=#149#153; //ї
230:b:=#226#149; //Ў
231:b:=#152#226; //ў
232:b:=#149#146; //°
233:b:=#226#149; //∙
234:b:=#147#226; //·
235:b:=#149#171; //√
236:b:=#226#149; //№
237:b:=#170#226; //¤
238:b:=#148#152; //■
239:b:=#226#148; //
240:b:=#140#226; //и
241:b:=#150#136; //╕
242:b:=#226#150; //к
243:b:=#132#226; //║
244:b:=#150#140; //п
245:b:=#226#150; //┐
246:b:=#144#226; //б
247:b:=#150#128; //в
248:b:=#209#128; //░
249:b:=#209#129; //Х
250:b:=#209#130; //╖
251:b:=#209#131; //v
252:b:=#209#132; //╣
253:b:=#209#133; //д
254:b:=#209#134; //ж
end;//case c
OutString:=OutString+b
end;
Text:= OutString
except
Result:=false
end;
end;
А там, где я изучал смотрел? http://ru.wikibooks.org/wiki/%D0%9A%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%B0ViruZ писал(а)::?:![]()
Где взять таблицы соответствия кодов Utf8 и cp866/cp1251/koi???
Гуглил - не помогло. Может, неправильно искал?
Странно... Мне оччень помогло в изучении и написании перекодировщика. На сайте отпочковал утилиты в поддомен и добавил туда исходники http://www.utils.virtux.org.ua. Следующий этап борьба с принтеромViruZ писал(а):По ссылке смотрел, но не помогло.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12