- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
const
Utf2WinTable : array [0..65, 0..1] of string = (
(#208#144,#192), (#208#145,#193), (#208#146,#194),
(#208#147,#195), (#208#148,#196), (#208#149,#197),
(#208#129,#168), (#208#150,#198), (#208#151,#199),
(#208#152,#200), (#208#153,#201), (#208#154,#202),
(#208#155,#203), (#208#156,#204), (#208#157,#205),
(#208#158,#206), (#208#159,#207), (#208#160,#208),
(#208#161,#209), (#208#162,#210), (#208#163,#211),
(#208#164,#212), (#208#165,#213), (#208#166,#214),
(#208#167,#215), (#208#168,#216), (#208#169,#217),
(#208#170,#218), (#208#171,#219), (#208#172,#220),
(#208#173,#221), (#208#174,#222), (#208#175,#223),
(#208#176,#224), (#208#177,#225), (#208#178,#226),
(#208#179,#227), (#208#180,#228), (#208#181,#229),
(#209#145,#184), (#208#182,#230), (#208#183,#231),
(#208#184,#232), (#208#185,#233), (#208#186,#234),
(#208#187,#235), (#208#188,#236), (#208#189,#237),
(#208#190,#238), (#208#191,#239), (#209#128,#240),
(#209#129,#241), (#209#130,#242), (#209#131,#243),
(#209#132,#244), (#209#133,#245), (#209#134,#246),
(#209#135,#247), (#209#136,#248), (#209#137,#249),
(#209#138,#250), (#209#139,#251), (#209#140,#252),
(#209#141,#253), (#209#142,#254), (#209#143,#255) );
function Utf8ToWin(s : string) : string;
var i : integer;
res :string;
begin
res:=s;
for I := 0 to 65 do
if pos(Utf2WinTable[i,0],res)>0
then res := StringReplace(res, Utf2WinTable[i,0], Utf2WinTable[i,1], [rfReplaceAll]);
Result:=res;
end;
Эта лажа исправляет кодировку. Работает, но ужасно медленно.
guesto 20.08.2016 00:57 # +18
Хотя выбор языка говорит о том, что ты еще учишься в школе и такие сложные конструкции как кодировки можешь еще и не понимать )
inkanus-gray 20.08.2016 01:06 # +46
А теперь представим, с какой скоростью оно будет работать, если вдруг потребуется добавить поддержку других символов...
*****
Решение действительно рабочее, но только для примитивных автоматов «найти и заменить». В Object Pascal'е же мы можем как минимум применить арифметику, заметив, что 192 - 144 = 48 и 239 - 191 = 48.
guest 20.08.2016 02:11 # −1252
bagor 20.08.2016 03:22 # −1269