diff --git a/components/fpspreadsheet/fpsconvencoding.pas b/components/fpspreadsheet/fpsconvencoding.pas deleted file mode 100644 index 0fefaa0bf..000000000 --- a/components/fpspreadsheet/fpsconvencoding.pas +++ /dev/null @@ -1,3464 +0,0 @@ -{ Code copied from lazarus/lcl/lconvencoding.pas - - This avoids adding the LCL as a dependency. - - Remove this unit once lconvencoding is in the FCL -} -unit fpsconvencoding; - -{$mode objfpc}{$H+} -//{$IFDEF WINDOWS} -//{$WARNING Windows/Wine/ReactOS locale conversion is not fully supported yet. Sorry.} -//{$ENDIF} - -interface - -//{$IFNDEF DisableIconv} -//{$IFDEF UNIX}{$IF not defined(VER2_2_0) and not defined(VER2_2_2)}{$DEFINE HasIconvEnc}{$ENDIF}{$ENDIF} -//{$ENDIF} - -uses - SysUtils, Classes, dos - {$IFDEF HasIconvEnc},iconvenc{$ENDIF}; - -const - EncodingUTF8 = 'utf8'; - EncodingAnsi = 'ansi'; - EncodingUTF8BOM = 'utf8bom'; // UTF-8 with byte order mark - EncodingUCS2LE = 'ucs2le'; // UCS 2 byte little endian - EncodingUCS2BE = 'ucs2le'; // UCS 2 byte big endian - -type - TConvertEncodingFunction = function(const s: string): string; - TCharToUTF8Table = array[char] of PChar; - TUnicodeToCharID = function(Unicode: cardinal): integer; -var - ConvertAnsiToUTF8: TConvertEncodingFunction = nil; - ConvertUTF8ToAnsi: TConvertEncodingFunction = nil; - -function SingleByteToUTF8(const s: string; const Table: TCharToUTF8Table): string; -function UTF8BOMToUTF8(const s: string): string; // UTF8 with BOM -function ISO_8859_1ToUTF8(const s: string): string; // central europe -function CP1250ToUTF8(const s: string): string; // central europe -function CP1251ToUTF8(const s: string): string; // cyrillic -function CP1252ToUTF8(const s: string): string; // latin 1 -function CP1253ToUTF8(const s: string): string; // greek -function CP1254ToUTF8(const s: string): string; // turkish -function CP1255ToUTF8(const s: string): string; // hebrew -function CP1256ToUTF8(const s: string): string; // arabic -function CP1257ToUTF8(const s: string): string; // baltic -function CP1258ToUTF8(const s: string): string; // vietnam - -function UTF8ToSingleByte(const s: string; - const UTF8CharConvFunc: TUnicodeToCharID): string; -function UTF8ToISO_8859_1(const s: string): string; // central europe -function UTF8ToCP1250(const s: string): string; // central europe -function UTF8ToCP1251(const s: string): string; // cyrillic -function UTF8ToCP1252(const s: string): string; // latin 1 -function UTF8ToCP1253(const s: string): string; // greek -function UTF8ToCP1254(const s: string): string; // turkish -function UTF8ToCP1255(const s: string): string; // hebrew -function UTF8ToCP1256(const s: string): string; // arabic -function UTF8ToCP1257(const s: string): string; // baltic -function UTF8ToCP1258(const s: string): string; // vietnam - -function UTF8CharacterToUnicode(p: PChar; out CharLen: integer): Cardinal; - -implementation - -const - ArrayISO_8859_1ToUTF8: TCharToUTF8Table = ( - #0, // #0 - #1, // #1 - #2, // #2 - #3, // #3 - #4, // #4 - #5, // #5 - #6, // #6 - #7, // #7 - #8, // #8 - #9, // #9 - #10, // #10 - #11, // #11 - #12, // #12 - #13, // #13 - #14, // #14 - #15, // #15 - #16, // #16 - #17, // #17 - #18, // #18 - #19, // #19 - #20, // #20 - #21, // #21 - #22, // #22 - #23, // #23 - #24, // #24 - #25, // #25 - #26, // #26 - #27, // #27 - #28, // #28 - #29, // #29 - #30, // #30 - #31, // #31 - ' ', // ' ' - '!', // '!' - '"', // '"' - '#', // '#' - '$', // '$' - '%', // '%' - '&', // '&' - '''', // '''' - '(', // '(' - ')', // ')' - '*', // '*' - '+', // '+' - ',', // ',' - '-', // '-' - '.', // '.' - '/', // '/' - '0', // '0' - '1', // '1' - '2', // '2' - '3', // '3' - '4', // '4' - '5', // '5' - '6', // '6' - '7', // '7' - '8', // '8' - '9', // '9' - ':', // ':' - ';', // ';' - '<', // '<' - '=', // '=' - '>', // '>' - '?', // '?' - '@', // '@' - 'A', // 'A' - 'B', // 'B' - 'C', // 'C' - 'D', // 'D' - 'E', // 'E' - 'F', // 'F' - 'G', // 'G' - 'H', // 'H' - 'I', // 'I' - 'J', // 'J' - 'K', // 'K' - 'L', // 'L' - 'M', // 'M' - 'N', // 'N' - 'O', // 'O' - 'P', // 'P' - 'Q', // 'Q' - 'R', // 'R' - 'S', // 'S' - 'T', // 'T' - 'U', // 'U' - 'V', // 'V' - 'W', // 'W' - 'X', // 'X' - 'Y', // 'Y' - 'Z', // 'Z' - '[', // '[' - '\', // '\' - ']', // ']' - '^', // '^' - '_', // '_' - '`', // '`' - 'a', // 'a' - 'b', // 'b' - 'c', // 'c' - 'd', // 'd' - 'e', // 'e' - 'f', // 'f' - 'g', // 'g' - 'h', // 'h' - 'i', // 'i' - 'j', // 'j' - 'k', // 'k' - 'l', // 'l' - 'm', // 'm' - 'n', // 'n' - 'o', // 'o' - 'p', // 'p' - 'q', // 'q' - 'r', // 'r' - 's', // 's' - 't', // 't' - 'u', // 'u' - 'v', // 'v' - 'w', // 'w' - 'x', // 'x' - 'y', // 'y' - 'z', // 'z' - '{', // '{' - '|', // '|' - '}', // '}' - '~', // '~' - #127, // #127 - #194#128, // #128 - #194#129, // #129 - #194#130, // #130 - #194#131, // #131 - #194#132, // #132 - #194#133, // #133 - #194#134, // #134 - #194#135, // #135 - #194#136, // #136 - #194#137, // #137 - #194#138, // #138 - #194#139, // #139 - #194#140, // #140 - #194#141, // #141 - #194#142, // #142 - #194#143, // #143 - #194#144, // #144 - #194#145, // #145 - #194#146, // #146 - #194#147, // #147 - #194#148, // #148 - #194#149, // #149 - #194#150, // #150 - #194#151, // #151 - #194#152, // #152 - #194#153, // #153 - #194#154, // #154 - #194#155, // #155 - #194#156, // #156 - #194#157, // #157 - #194#158, // #158 - #194#159, // #159 - #194#160, // #160 - #194#161, // #161 - #194#162, // #162 - #194#163, // #163 - #194#164, // #164 - #194#165, // #165 - #194#166, // #166 - #194#167, // #167 - #194#168, // #168 - #194#169, // #169 - #194#170, // #170 - #194#171, // #171 - #194#172, // #172 - #194#173, // #173 - #194#174, // #174 - #194#175, // #175 - #194#176, // #176 - #194#177, // #177 - #194#178, // #178 - #194#179, // #179 - #194#180, // #180 - #194#181, // #181 - #194#182, // #182 - #194#183, // #183 - #194#184, // #184 - #194#185, // #185 - #194#186, // #186 - #194#187, // #187 - #194#188, // #188 - #194#189, // #189 - #194#190, // #190 - #194#191, // #191 - #195#128, // #192 - #195#129, // #193 - #195#130, // #194 - #195#131, // #195 - #195#132, // #196 - #195#133, // #197 - #195#134, // #198 - #195#135, // #199 - #195#136, // #200 - #195#137, // #201 - #195#138, // #202 - #195#139, // #203 - #195#140, // #204 - #195#141, // #205 - #195#142, // #206 - #195#143, // #207 - #195#144, // #208 - #195#145, // #209 - #195#146, // #210 - #195#147, // #211 - #195#148, // #212 - #195#149, // #213 - #195#150, // #214 - #195#151, // #215 - #195#152, // #216 - #195#153, // #217 - #195#154, // #218 - #195#155, // #219 - #195#156, // #220 - #195#157, // #221 - #195#158, // #222 - #195#159, // #223 - #195#160, // #224 - #195#161, // #225 - #195#162, // #226 - #195#163, // #227 - #195#164, // #228 - #195#165, // #229 - #195#166, // #230 - #195#167, // #231 - #195#168, // #232 - #195#169, // #233 - #195#170, // #234 - #195#171, // #235 - #195#172, // #236 - #195#173, // #237 - #195#174, // #238 - #195#175, // #239 - #195#176, // #240 - #195#177, // #241 - #195#178, // #242 - #195#179, // #243 - #195#180, // #244 - #195#181, // #245 - #195#182, // #246 - #195#183, // #247 - #195#184, // #248 - #195#185, // #249 - #195#186, // #250 - #195#187, // #251 - #195#188, // #252 - #195#189, // #253 - #195#190, // #254 - #195#191 // #255 - ); - - ArrayCP1250ToUTF8: TCharToUTF8Table = ( - #0, // #0 - #1, // #1 - #2, // #2 - #3, // #3 - #4, // #4 - #5, // #5 - #6, // #6 - #7, // #7 - #8, // #8 - #9, // #9 - #10, // #10 - #11, // #11 - #12, // #12 - #13, // #13 - #14, // #14 - #15, // #15 - #16, // #16 - #17, // #17 - #18, // #18 - #19, // #19 - #20, // #20 - #21, // #21 - #22, // #22 - #23, // #23 - #24, // #24 - #25, // #25 - #26, // #26 - #27, // #27 - #28, // #28 - #29, // #29 - #30, // #30 - #31, // #31 - ' ', // ' ' - '!', // '!' - '"', // '"' - '#', // '#' - '$', // '$' - '%', // '%' - '&', // '&' - '''', // '''' - '(', // '(' - ')', // ')' - '*', // '*' - '+', // '+' - ',', // ',' - '-', // '-' - '.', // '.' - '/', // '/' - '0', // '0' - '1', // '1' - '2', // '2' - '3', // '3' - '4', // '4' - '5', // '5' - '6', // '6' - '7', // '7' - '8', // '8' - '9', // '9' - ':', // ':' - ';', // ';' - '<', // '<' - '=', // '=' - '>', // '>' - '?', // '?' - '@', // '@' - 'A', // 'A' - 'B', // 'B' - 'C', // 'C' - 'D', // 'D' - 'E', // 'E' - 'F', // 'F' - 'G', // 'G' - 'H', // 'H' - 'I', // 'I' - 'J', // 'J' - 'K', // 'K' - 'L', // 'L' - 'M', // 'M' - 'N', // 'N' - 'O', // 'O' - 'P', // 'P' - 'Q', // 'Q' - 'R', // 'R' - 'S', // 'S' - 'T', // 'T' - 'U', // 'U' - 'V', // 'V' - 'W', // 'W' - 'X', // 'X' - 'Y', // 'Y' - 'Z', // 'Z' - '[', // '[' - '\', // '\' - ']', // ']' - '^', // '^' - '_', // '_' - '`', // '`' - 'a', // 'a' - 'b', // 'b' - 'c', // 'c' - 'd', // 'd' - 'e', // 'e' - 'f', // 'f' - 'g', // 'g' - 'h', // 'h' - 'i', // 'i' - 'j', // 'j' - 'k', // 'k' - 'l', // 'l' - 'm', // 'm' - 'n', // 'n' - 'o', // 'o' - 'p', // 'p' - 'q', // 'q' - 'r', // 'r' - 's', // 's' - 't', // 't' - 'u', // 'u' - 'v', // 'v' - 'w', // 'w' - 'x', // 'x' - 'y', // 'y' - 'z', // 'z' - '{', // '{' - '|', // '|' - '}', // '}' - '~', // '~' - #127, // #127 - #226#130#172, // #128 - '', // #129 - #226#128#154, // #130 - '', // #131 - #226#128#158, // #132 - #226#128#166, // #133 - #226#128#160, // #134 - #226#128#161, // #135 - '', // #136 - #226#128#176, // #137 - #197#160, // #138 - #226#128#185, // #139 - #197#154, // #140 - #197#164, // #141 - #197#189, // #142 - #197#185, // #143 - '', // #144 - #226#128#152, // #145 - #226#128#153, // #146 - #226#128#156, // #147 - #226#128#157, // #148 - #226#128#162, // #149 - #226#128#147, // #150 - #226#128#148, // #151 - '', // #152 - #226#132#162, // #153 - #197#161, // #154 - #226#128#186, // #155 - #197#155, // #156 - #197#165, // #157 - #197#190, // #158 - #197#186, // #159 - #194#160, // #160 - #203#135, // #161 - #203#152, // #162 - #197#129, // #163 - #194#164, // #164 - #196#132, // #165 - #194#166, // #166 - #194#167, // #167 - #194#168, // #168 - #194#169, // #169 - #197#158, // #170 - #194#171, // #171 - #194#172, // #172 - #194#173, // #173 - #194#174, // #174 - #197#187, // #175 - #194#176, // #176 - #194#177, // #177 - #203#155, // #178 - #197#130, // #179 - #194#180, // #180 - #194#181, // #181 - #194#182, // #182 - #194#183, // #183 - #194#184, // #184 - #196#133, // #185 - #197#159, // #186 - #194#187, // #187 - #196#189, // #188 - #203#157, // #189 - #196#190, // #190 - #197#188, // #191 - #197#148, // #192 - #195#129, // #193 - #195#130, // #194 - #196#130, // #195 - #195#132, // #196 - #196#185, // #197 - #196#134, // #198 - #195#135, // #199 - #196#140, // #200 - #195#137, // #201 - #196#152, // #202 - #195#139, // #203 - #196#154, // #204 - #195#141, // #205 - #195#142, // #206 - #196#142, // #207 - #196#144, // #208 - #197#131, // #209 - #197#135, // #210 - #195#147, // #211 - #195#148, // #212 - #197#144, // #213 - #195#150, // #214 - #195#151, // #215 - #197#152, // #216 - #197#174, // #217 - #195#154, // #218 - #197#176, // #219 - #195#156, // #220 - #195#157, // #221 - #197#162, // #222 - #195#159, // #223 - #197#149, // #224 - #195#161, // #225 - #195#162, // #226 - #196#131, // #227 - #195#164, // #228 - #196#186, // #229 - #196#135, // #230 - #195#167, // #231 - #196#141, // #232 - #195#169, // #233 - #196#153, // #234 - #195#171, // #235 - #196#155, // #236 - #195#173, // #237 - #195#174, // #238 - #196#143, // #239 - #196#145, // #240 - #197#132, // #241 - #197#136, // #242 - #195#179, // #243 - #195#180, // #244 - #197#145, // #245 - #195#182, // #246 - #195#183, // #247 - #197#153, // #248 - #197#175, // #249 - #195#186, // #250 - #197#177, // #251 - #195#188, // #252 - #195#189, // #253 - #197#163, // #254 - #203#153 // #255 - ); - - ArrayCP1251ToUTF8: TCharToUTF8Table = ( - #0, // #0 - #1, // #1 - #2, // #2 - #3, // #3 - #4, // #4 - #5, // #5 - #6, // #6 - #7, // #7 - #8, // #8 - #9, // #9 - #10, // #10 - #11, // #11 - #12, // #12 - #13, // #13 - #14, // #14 - #15, // #15 - #16, // #16 - #17, // #17 - #18, // #18 - #19, // #19 - #20, // #20 - #21, // #21 - #22, // #22 - #23, // #23 - #24, // #24 - #25, // #25 - #26, // #26 - #27, // #27 - #28, // #28 - #29, // #29 - #30, // #30 - #31, // #31 - ' ', // ' ' - '!', // '!' - '"', // '"' - '#', // '#' - '$', // '$' - '%', // '%' - '&', // '&' - '''', // '''' - '(', // '(' - ')', // ')' - '*', // '*' - '+', // '+' - ',', // ',' - '-', // '-' - '.', // '.' - '/', // '/' - '0', // '0' - '1', // '1' - '2', // '2' - '3', // '3' - '4', // '4' - '5', // '5' - '6', // '6' - '7', // '7' - '8', // '8' - '9', // '9' - ':', // ':' - ';', // ';' - '<', // '<' - '=', // '=' - '>', // '>' - '?', // '?' - '@', // '@' - 'A', // 'A' - 'B', // 'B' - 'C', // 'C' - 'D', // 'D' - 'E', // 'E' - 'F', // 'F' - 'G', // 'G' - 'H', // 'H' - 'I', // 'I' - 'J', // 'J' - 'K', // 'K' - 'L', // 'L' - 'M', // 'M' - 'N', // 'N' - 'O', // 'O' - 'P', // 'P' - 'Q', // 'Q' - 'R', // 'R' - 'S', // 'S' - 'T', // 'T' - 'U', // 'U' - 'V', // 'V' - 'W', // 'W' - 'X', // 'X' - 'Y', // 'Y' - 'Z', // 'Z' - '[', // '[' - '\', // '\' - ']', // ']' - '^', // '^' - '_', // '_' - '`', // '`' - 'a', // 'a' - 'b', // 'b' - 'c', // 'c' - 'd', // 'd' - 'e', // 'e' - 'f', // 'f' - 'g', // 'g' - 'h', // 'h' - 'i', // 'i' - 'j', // 'j' - 'k', // 'k' - 'l', // 'l' - 'm', // 'm' - 'n', // 'n' - 'o', // 'o' - 'p', // 'p' - 'q', // 'q' - 'r', // 'r' - 's', // 's' - 't', // 't' - 'u', // 'u' - 'v', // 'v' - 'w', // 'w' - 'x', // 'x' - 'y', // 'y' - 'z', // 'z' - '{', // '{' - '|', // '|' - '}', // '}' - '~', // '~' - #127, // #127 - #208#130, // #128 - #208#131, // #129 - #226#128#154, // #130 - #209#147, // #131 - #226#128#158, // #132 - #226#128#166, // #133 - #226#128#160, // #134 - #226#128#161, // #135 - #226#130#172, // #136 - #226#128#176, // #137 - #208#137, // #138 - #226#128#185, // #139 - #208#138, // #140 - #208#140, // #141 - #208#139, // #142 - #208#143, // #143 - #209#146, // #144 - #226#128#152, // #145 - #226#128#153, // #146 - #226#128#156, // #147 - #226#128#157, // #148 - #226#128#162, // #149 - #226#128#147, // #150 - #226#128#148, // #151 - '', // #152 - #226#132#162, // #153 - #209#153, // #154 - #226#128#186, // #155 - #209#154, // #156 - #209#156, // #157 - #209#155, // #158 - #209#159, // #159 - #194#160, // #160 - #208#142, // #161 - #209#158, // #162 - #208#136, // #163 - #194#164, // #164 - #210#144, // #165 - #194#166, // #166 - #194#167, // #167 - #208#129, // #168 - #194#169, // #169 - #208#132, // #170 - #194#171, // #171 - #194#172, // #172 - #194#173, // #173 - #194#174, // #174 - #208#135, // #175 - #194#176, // #176 - #194#177, // #177 - #208#134, // #178 - #209#150, // #179 - #210#145, // #180 - #194#181, // #181 - #194#182, // #182 - #194#183, // #183 - #209#145, // #184 - #226#132#150, // #185 - #209#148, // #186 - #194#187, // #187 - #209#152, // #188 - #208#133, // #189 - #209#149, // #190 - #209#151, // #191 - #208#144, // #192 - #208#145, // #193 - #208#146, // #194 - #208#147, // #195 - #208#148, // #196 - #208#149, // #197 - #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 - #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 - ); - - ArrayCP1252ToUTF8: TCharToUTF8Table = ( - #0, // #0 - #1, // #1 - #2, // #2 - #3, // #3 - #4, // #4 - #5, // #5 - #6, // #6 - #7, // #7 - #8, // #8 - #9, // #9 - #10, // #10 - #11, // #11 - #12, // #12 - #13, // #13 - #14, // #14 - #15, // #15 - #16, // #16 - #17, // #17 - #18, // #18 - #19, // #19 - #20, // #20 - #21, // #21 - #22, // #22 - #23, // #23 - #24, // #24 - #25, // #25 - #26, // #26 - #27, // #27 - #28, // #28 - #29, // #29 - #30, // #30 - #31, // #31 - ' ', // ' ' - '!', // '!' - '"', // '"' - '#', // '#' - '$', // '$' - '%', // '%' - '&', // '&' - '''', // '''' - '(', // '(' - ')', // ')' - '*', // '*' - '+', // '+' - ',', // ',' - '-', // '-' - '.', // '.' - '/', // '/' - '0', // '0' - '1', // '1' - '2', // '2' - '3', // '3' - '4', // '4' - '5', // '5' - '6', // '6' - '7', // '7' - '8', // '8' - '9', // '9' - ':', // ':' - ';', // ';' - '<', // '<' - '=', // '=' - '>', // '>' - '?', // '?' - '@', // '@' - 'A', // 'A' - 'B', // 'B' - 'C', // 'C' - 'D', // 'D' - 'E', // 'E' - 'F', // 'F' - 'G', // 'G' - 'H', // 'H' - 'I', // 'I' - 'J', // 'J' - 'K', // 'K' - 'L', // 'L' - 'M', // 'M' - 'N', // 'N' - 'O', // 'O' - 'P', // 'P' - 'Q', // 'Q' - 'R', // 'R' - 'S', // 'S' - 'T', // 'T' - 'U', // 'U' - 'V', // 'V' - 'W', // 'W' - 'X', // 'X' - 'Y', // 'Y' - 'Z', // 'Z' - '[', // '[' - '\', // '\' - ']', // ']' - '^', // '^' - '_', // '_' - '`', // '`' - 'a', // 'a' - 'b', // 'b' - 'c', // 'c' - 'd', // 'd' - 'e', // 'e' - 'f', // 'f' - 'g', // 'g' - 'h', // 'h' - 'i', // 'i' - 'j', // 'j' - 'k', // 'k' - 'l', // 'l' - 'm', // 'm' - 'n', // 'n' - 'o', // 'o' - 'p', // 'p' - 'q', // 'q' - 'r', // 'r' - 's', // 's' - 't', // 't' - 'u', // 'u' - 'v', // 'v' - 'w', // 'w' - 'x', // 'x' - 'y', // 'y' - 'z', // 'z' - '{', // '{' - '|', // '|' - '}', // '}' - '~', // '~' - #127, // #127 - #226#130#172, // #128 - '', // #129 - #226#128#154, // #130 - #198#146, // #131 - #226#128#158, // #132 - #226#128#166, // #133 - #226#128#160, // #134 - #226#128#161, // #135 - #203#134, // #136 - #226#128#176, // #137 - #197#160, // #138 - #226#128#185, // #139 - #197#146, // #140 - '', // #141 - #197#189, // #142 - '', // #143 - '', // #144 - #226#128#152, // #145 - #226#128#153, // #146 - #226#128#156, // #147 - #226#128#157, // #148 - #226#128#162, // #149 - #226#128#147, // #150 - #226#128#148, // #151 - #203#156, // #152 - #226#132#162, // #153 - #197#161, // #154 - #226#128#186, // #155 - #197#147, // #156 - '', // #157 - #197#190, // #158 - #197#184, // #159 - #194#160, // #160 - #194#161, // #161 - #194#162, // #162 - #194#163, // #163 - #194#164, // #164 - #194#165, // #165 - #194#166, // #166 - #194#167, // #167 - #194#168, // #168 - #194#169, // #169 - #194#170, // #170 - #194#171, // #171 - #194#172, // #172 - #194#173, // #173 - #194#174, // #174 - #194#175, // #175 - #194#176, // #176 - #194#177, // #177 - #194#178, // #178 - #194#179, // #179 - #194#180, // #180 - #194#181, // #181 - #194#182, // #182 - #194#183, // #183 - #194#184, // #184 - #194#185, // #185 - #194#186, // #186 - #194#187, // #187 - #194#188, // #188 - #194#189, // #189 - #194#190, // #190 - #194#191, // #191 - #195#128, // #192 - #195#129, // #193 - #195#130, // #194 - #195#131, // #195 - #195#132, // #196 - #195#133, // #197 - #195#134, // #198 - #195#135, // #199 - #195#136, // #200 - #195#137, // #201 - #195#138, // #202 - #195#139, // #203 - #195#140, // #204 - #195#141, // #205 - #195#142, // #206 - #195#143, // #207 - #195#144, // #208 - #195#145, // #209 - #195#146, // #210 - #195#147, // #211 - #195#148, // #212 - #195#149, // #213 - #195#150, // #214 - #195#151, // #215 - #195#152, // #216 - #195#153, // #217 - #195#154, // #218 - #195#155, // #219 - #195#156, // #220 - #195#157, // #221 - #195#158, // #222 - #195#159, // #223 - #195#160, // #224 - #195#161, // #225 - #195#162, // #226 - #195#163, // #227 - #195#164, // #228 - #195#165, // #229 - #195#166, // #230 - #195#167, // #231 - #195#168, // #232 - #195#169, // #233 - #195#170, // #234 - #195#171, // #235 - #195#172, // #236 - #195#173, // #237 - #195#174, // #238 - #195#175, // #239 - #195#176, // #240 - #195#177, // #241 - #195#178, // #242 - #195#179, // #243 - #195#180, // #244 - #195#181, // #245 - #195#182, // #246 - #195#183, // #247 - #195#184, // #248 - #195#185, // #249 - #195#186, // #250 - #195#187, // #251 - #195#188, // #252 - #195#189, // #253 - #195#190, // #254 - #195#191 // #255 - ); - - ArrayCP1253ToUTF8: TCharToUTF8Table = ( - #0, // #0 - #1, // #1 - #2, // #2 - #3, // #3 - #4, // #4 - #5, // #5 - #6, // #6 - #7, // #7 - #8, // #8 - #9, // #9 - #10, // #10 - #11, // #11 - #12, // #12 - #13, // #13 - #14, // #14 - #15, // #15 - #16, // #16 - #17, // #17 - #18, // #18 - #19, // #19 - #20, // #20 - #21, // #21 - #22, // #22 - #23, // #23 - #24, // #24 - #25, // #25 - #26, // #26 - #27, // #27 - #28, // #28 - #29, // #29 - #30, // #30 - #31, // #31 - ' ', // ' ' - '!', // '!' - '"', // '"' - '#', // '#' - '$', // '$' - '%', // '%' - '&', // '&' - '''', // '''' - '(', // '(' - ')', // ')' - '*', // '*' - '+', // '+' - ',', // ',' - '-', // '-' - '.', // '.' - '/', // '/' - '0', // '0' - '1', // '1' - '2', // '2' - '3', // '3' - '4', // '4' - '5', // '5' - '6', // '6' - '7', // '7' - '8', // '8' - '9', // '9' - ':', // ':' - ';', // ';' - '<', // '<' - '=', // '=' - '>', // '>' - '?', // '?' - '@', // '@' - 'A', // 'A' - 'B', // 'B' - 'C', // 'C' - 'D', // 'D' - 'E', // 'E' - 'F', // 'F' - 'G', // 'G' - 'H', // 'H' - 'I', // 'I' - 'J', // 'J' - 'K', // 'K' - 'L', // 'L' - 'M', // 'M' - 'N', // 'N' - 'O', // 'O' - 'P', // 'P' - 'Q', // 'Q' - 'R', // 'R' - 'S', // 'S' - 'T', // 'T' - 'U', // 'U' - 'V', // 'V' - 'W', // 'W' - 'X', // 'X' - 'Y', // 'Y' - 'Z', // 'Z' - '[', // '[' - '\', // '\' - ']', // ']' - '^', // '^' - '_', // '_' - '`', // '`' - 'a', // 'a' - 'b', // 'b' - 'c', // 'c' - 'd', // 'd' - 'e', // 'e' - 'f', // 'f' - 'g', // 'g' - 'h', // 'h' - 'i', // 'i' - 'j', // 'j' - 'k', // 'k' - 'l', // 'l' - 'm', // 'm' - 'n', // 'n' - 'o', // 'o' - 'p', // 'p' - 'q', // 'q' - 'r', // 'r' - 's', // 's' - 't', // 't' - 'u', // 'u' - 'v', // 'v' - 'w', // 'w' - 'x', // 'x' - 'y', // 'y' - 'z', // 'z' - '{', // '{' - '|', // '|' - '}', // '}' - '~', // '~' - #127, // #127 - #226#130#172, // #128 - '', // #129 - #226#128#154, // #130 - #198#146, // #131 - #226#128#158, // #132 - #226#128#166, // #133 - #226#128#160, // #134 - #226#128#161, // #135 - '', // #136 - #226#128#176, // #137 - '', // #138 - #226#128#185, // #139 - '', // #140 - '', // #141 - '', // #142 - '', // #143 - '', // #144 - #226#128#152, // #145 - #226#128#153, // #146 - #226#128#156, // #147 - #226#128#157, // #148 - #226#128#162, // #149 - #226#128#147, // #150 - #226#128#148, // #151 - '', // #152 - #226#132#162, // #153 - '', // #154 - #226#128#186, // #155 - '', // #156 - '', // #157 - '', // #158 - '', // #159 - #194#160, // #160 - #206#133, // #161 - #206#134, // #162 - #194#163, // #163 - #194#164, // #164 - #194#165, // #165 - #194#166, // #166 - #194#167, // #167 - #194#168, // #168 - #194#169, // #169 - '', // #170 - #194#171, // #171 - #194#172, // #172 - #194#173, // #173 - #194#174, // #174 - #226#128#149, // #175 - #194#176, // #176 - #194#177, // #177 - #194#178, // #178 - #194#179, // #179 - #206#132, // #180 - #194#181, // #181 - #194#182, // #182 - #194#183, // #183 - #206#136, // #184 - #206#137, // #185 - #206#138, // #186 - #194#187, // #187 - #206#140, // #188 - #194#189, // #189 - #206#142, // #190 - #206#143, // #191 - #206#144, // #192 - #206#145, // #193 - #206#146, // #194 - #206#147, // #195 - #206#148, // #196 - #206#149, // #197 - #206#150, // #198 - #206#151, // #199 - #206#152, // #200 - #206#153, // #201 - #206#154, // #202 - #206#155, // #203 - #206#156, // #204 - #206#157, // #205 - #206#158, // #206 - #206#159, // #207 - #206#160, // #208 - #206#161, // #209 - '', // #210 - #206#163, // #211 - #206#164, // #212 - #206#165, // #213 - #206#166, // #214 - #206#167, // #215 - #206#168, // #216 - #206#169, // #217 - #206#170, // #218 - #206#171, // #219 - #206#172, // #220 - #206#173, // #221 - #206#174, // #222 - #206#175, // #223 - #206#176, // #224 - #206#177, // #225 - #206#178, // #226 - #206#179, // #227 - #206#180, // #228 - #206#181, // #229 - #206#182, // #230 - #206#183, // #231 - #206#184, // #232 - #206#185, // #233 - #206#186, // #234 - #206#187, // #235 - #206#188, // #236 - #206#189, // #237 - #206#190, // #238 - #206#191, // #239 - #207#128, // #240 - #207#129, // #241 - #207#130, // #242 - #207#131, // #243 - #207#132, // #244 - #207#133, // #245 - #207#134, // #246 - #207#135, // #247 - #207#136, // #248 - #207#137, // #249 - #207#138, // #250 - #207#139, // #251 - #207#140, // #252 - #207#141, // #253 - #207#142, // #254 - '' // #255 - ); - - ArrayCP1254ToUTF8: TCharToUTF8Table = ( - #0, // #0 - #1, // #1 - #2, // #2 - #3, // #3 - #4, // #4 - #5, // #5 - #6, // #6 - #7, // #7 - #8, // #8 - #9, // #9 - #10, // #10 - #11, // #11 - #12, // #12 - #13, // #13 - #14, // #14 - #15, // #15 - #16, // #16 - #17, // #17 - #18, // #18 - #19, // #19 - #20, // #20 - #21, // #21 - #22, // #22 - #23, // #23 - #24, // #24 - #25, // #25 - #26, // #26 - #27, // #27 - #28, // #28 - #29, // #29 - #30, // #30 - #31, // #31 - ' ', // ' ' - '!', // '!' - '"', // '"' - '#', // '#' - '$', // '$' - '%', // '%' - '&', // '&' - '''', // '''' - '(', // '(' - ')', // ')' - '*', // '*' - '+', // '+' - ',', // ',' - '-', // '-' - '.', // '.' - '/', // '/' - '0', // '0' - '1', // '1' - '2', // '2' - '3', // '3' - '4', // '4' - '5', // '5' - '6', // '6' - '7', // '7' - '8', // '8' - '9', // '9' - ':', // ':' - ';', // ';' - '<', // '<' - '=', // '=' - '>', // '>' - '?', // '?' - '@', // '@' - 'A', // 'A' - 'B', // 'B' - 'C', // 'C' - 'D', // 'D' - 'E', // 'E' - 'F', // 'F' - 'G', // 'G' - 'H', // 'H' - 'I', // 'I' - 'J', // 'J' - 'K', // 'K' - 'L', // 'L' - 'M', // 'M' - 'N', // 'N' - 'O', // 'O' - 'P', // 'P' - 'Q', // 'Q' - 'R', // 'R' - 'S', // 'S' - 'T', // 'T' - 'U', // 'U' - 'V', // 'V' - 'W', // 'W' - 'X', // 'X' - 'Y', // 'Y' - 'Z', // 'Z' - '[', // '[' - '\', // '\' - ']', // ']' - '^', // '^' - '_', // '_' - '`', // '`' - 'a', // 'a' - 'b', // 'b' - 'c', // 'c' - 'd', // 'd' - 'e', // 'e' - 'f', // 'f' - 'g', // 'g' - 'h', // 'h' - 'i', // 'i' - 'j', // 'j' - 'k', // 'k' - 'l', // 'l' - 'm', // 'm' - 'n', // 'n' - 'o', // 'o' - 'p', // 'p' - 'q', // 'q' - 'r', // 'r' - 's', // 's' - 't', // 't' - 'u', // 'u' - 'v', // 'v' - 'w', // 'w' - 'x', // 'x' - 'y', // 'y' - 'z', // 'z' - '{', // '{' - '|', // '|' - '}', // '}' - '~', // '~' - #127, // #127 - #226#130#172, // #128 - '', // #129 - #226#128#154, // #130 - #198#146, // #131 - #226#128#158, // #132 - #226#128#166, // #133 - #226#128#160, // #134 - #226#128#161, // #135 - #203#134, // #136 - #226#128#176, // #137 - #197#160, // #138 - #226#128#185, // #139 - #197#146, // #140 - '', // #141 - '', // #142 - '', // #143 - '', // #144 - #226#128#152, // #145 - #226#128#153, // #146 - #226#128#156, // #147 - #226#128#157, // #148 - #226#128#162, // #149 - #226#128#147, // #150 - #226#128#148, // #151 - #203#156, // #152 - #226#132#162, // #153 - #197#161, // #154 - #226#128#186, // #155 - #197#147, // #156 - '', // #157 - '', // #158 - #197#184, // #159 - #194#160, // #160 - #194#161, // #161 - #194#162, // #162 - #194#163, // #163 - #194#164, // #164 - #194#165, // #165 - #194#166, // #166 - #194#167, // #167 - #194#168, // #168 - #194#169, // #169 - #194#170, // #170 - #194#171, // #171 - #194#172, // #172 - #194#173, // #173 - #194#174, // #174 - #194#175, // #175 - #194#176, // #176 - #194#177, // #177 - #194#178, // #178 - #194#179, // #179 - #194#180, // #180 - #194#181, // #181 - #194#182, // #182 - #194#183, // #183 - #194#184, // #184 - #194#185, // #185 - #194#186, // #186 - #194#187, // #187 - #194#188, // #188 - #194#189, // #189 - #194#190, // #190 - #194#191, // #191 - #195#128, // #192 - #195#129, // #193 - #195#130, // #194 - #195#131, // #195 - #195#132, // #196 - #195#133, // #197 - #195#134, // #198 - #195#135, // #199 - #195#136, // #200 - #195#137, // #201 - #195#138, // #202 - #195#139, // #203 - #195#140, // #204 - #195#141, // #205 - #195#142, // #206 - #195#143, // #207 - #196#158, // #208 - #195#145, // #209 - #195#146, // #210 - #195#147, // #211 - #195#148, // #212 - #195#149, // #213 - #195#150, // #214 - #195#151, // #215 - #195#152, // #216 - #195#153, // #217 - #195#154, // #218 - #195#155, // #219 - #195#156, // #220 - #196#176, // #221 - #197#158, // #222 - #195#159, // #223 - #195#160, // #224 - #195#161, // #225 - #195#162, // #226 - #195#163, // #227 - #195#164, // #228 - #195#165, // #229 - #195#166, // #230 - #195#167, // #231 - #195#168, // #232 - #195#169, // #233 - #195#170, // #234 - #195#171, // #235 - #195#172, // #236 - #195#173, // #237 - #195#174, // #238 - #195#175, // #239 - #196#159, // #240 - #195#177, // #241 - #195#178, // #242 - #195#179, // #243 - #195#180, // #244 - #195#181, // #245 - #195#182, // #246 - #195#183, // #247 - #195#184, // #248 - #195#185, // #249 - #195#186, // #250 - #195#187, // #251 - #195#188, // #252 - #196#177, // #253 - #197#159, // #254 - #195#191 // #255 - ); - - ArrayCP1255ToUTF8: TCharToUTF8Table = ( - #0, // #0 - #1, // #1 - #2, // #2 - #3, // #3 - #4, // #4 - #5, // #5 - #6, // #6 - #7, // #7 - #8, // #8 - #9, // #9 - #10, // #10 - #11, // #11 - #12, // #12 - #13, // #13 - #14, // #14 - #15, // #15 - #16, // #16 - #17, // #17 - #18, // #18 - #19, // #19 - #20, // #20 - #21, // #21 - #22, // #22 - #23, // #23 - #24, // #24 - #25, // #25 - #26, // #26 - #27, // #27 - #28, // #28 - #29, // #29 - #30, // #30 - #31, // #31 - ' ', // ' ' - '!', // '!' - '"', // '"' - '#', // '#' - '$', // '$' - '%', // '%' - '&', // '&' - '''', // '''' - '(', // '(' - ')', // ')' - '*', // '*' - '+', // '+' - ',', // ',' - '-', // '-' - '.', // '.' - '/', // '/' - '0', // '0' - '1', // '1' - '2', // '2' - '3', // '3' - '4', // '4' - '5', // '5' - '6', // '6' - '7', // '7' - '8', // '8' - '9', // '9' - ':', // ':' - ';', // ';' - '<', // '<' - '=', // '=' - '>', // '>' - '?', // '?' - '@', // '@' - 'A', // 'A' - 'B', // 'B' - 'C', // 'C' - 'D', // 'D' - 'E', // 'E' - 'F', // 'F' - 'G', // 'G' - 'H', // 'H' - 'I', // 'I' - 'J', // 'J' - 'K', // 'K' - 'L', // 'L' - 'M', // 'M' - 'N', // 'N' - 'O', // 'O' - 'P', // 'P' - 'Q', // 'Q' - 'R', // 'R' - 'S', // 'S' - 'T', // 'T' - 'U', // 'U' - 'V', // 'V' - 'W', // 'W' - 'X', // 'X' - 'Y', // 'Y' - 'Z', // 'Z' - '[', // '[' - '\', // '\' - ']', // ']' - '^', // '^' - '_', // '_' - '`', // '`' - 'a', // 'a' - 'b', // 'b' - 'c', // 'c' - 'd', // 'd' - 'e', // 'e' - 'f', // 'f' - 'g', // 'g' - 'h', // 'h' - 'i', // 'i' - 'j', // 'j' - 'k', // 'k' - 'l', // 'l' - 'm', // 'm' - 'n', // 'n' - 'o', // 'o' - 'p', // 'p' - 'q', // 'q' - 'r', // 'r' - 's', // 's' - 't', // 't' - 'u', // 'u' - 'v', // 'v' - 'w', // 'w' - 'x', // 'x' - 'y', // 'y' - 'z', // 'z' - '{', // '{' - '|', // '|' - '}', // '}' - '~', // '~' - #127, // #127 - #226#130#172, // #128 - '', // #129 - #226#128#154, // #130 - #198#146, // #131 - #226#128#158, // #132 - #226#128#166, // #133 - #226#128#160, // #134 - #226#128#161, // #135 - #203#134, // #136 - #226#128#176, // #137 - '', // #138 - #226#128#185, // #139 - '', // #140 - '', // #141 - '', // #142 - '', // #143 - '', // #144 - #226#128#152, // #145 - #226#128#153, // #146 - #226#128#156, // #147 - #226#128#157, // #148 - #226#128#162, // #149 - #226#128#147, // #150 - #226#128#148, // #151 - #203#156, // #152 - #226#132#162, // #153 - '', // #154 - #226#128#186, // #155 - '', // #156 - '', // #157 - '', // #158 - '', // #159 - #194#160, // #160 - #194#161, // #161 - #194#162, // #162 - #194#163, // #163 - #226#130#170, // #164 - #194#165, // #165 - #194#166, // #166 - #194#167, // #167 - #194#168, // #168 - #194#169, // #169 - #195#151, // #170 - #194#171, // #171 - #194#172, // #172 - #194#173, // #173 - #194#174, // #174 - #194#175, // #175 - #194#176, // #176 - #194#177, // #177 - #194#178, // #178 - #194#179, // #179 - #194#180, // #180 - #194#181, // #181 - #194#182, // #182 - #194#183, // #183 - #194#184, // #184 - #194#185, // #185 - #195#183, // #186 - #194#187, // #187 - #194#188, // #188 - #194#189, // #189 - #194#190, // #190 - #194#191, // #191 - #214#176, // #192 - #214#177, // #193 - #214#178, // #194 - #214#179, // #195 - #214#180, // #196 - #214#181, // #197 - #214#182, // #198 - #214#183, // #199 - #214#184, // #200 - #214#185, // #201 - '', // #202 - #214#187, // #203 - #214#188, // #204 - #214#189, // #205 - #214#190, // #206 - #214#191, // #207 - #215#128, // #208 - #215#129, // #209 - #215#130, // #210 - #215#131, // #211 - #215#176, // #212 - #215#177, // #213 - #215#178, // #214 - #215#179, // #215 - #215#180, // #216 - '', // #217 - '', // #218 - '', // #219 - '', // #220 - '', // #221 - '', // #222 - '', // #223 - #215#144, // #224 - #215#145, // #225 - #215#146, // #226 - #215#147, // #227 - #215#148, // #228 - #215#149, // #229 - #215#150, // #230 - #215#151, // #231 - #215#152, // #232 - #215#153, // #233 - #215#154, // #234 - #215#155, // #235 - #215#156, // #236 - #215#157, // #237 - #215#158, // #238 - #215#159, // #239 - #215#160, // #240 - #215#161, // #241 - #215#162, // #242 - #215#163, // #243 - #215#164, // #244 - #215#165, // #245 - #215#166, // #246 - #215#167, // #247 - #215#168, // #248 - #215#169, // #249 - #215#170, // #250 - '', // #251 - '', // #252 - #226#128#142, // #253 - #226#128#143, // #254 - '' // #255 - ); - - ArrayCP1256ToUTF8: TCharToUTF8Table = ( - #0, // #0 - #1, // #1 - #2, // #2 - #3, // #3 - #4, // #4 - #5, // #5 - #6, // #6 - #7, // #7 - #8, // #8 - #9, // #9 - #10, // #10 - #11, // #11 - #12, // #12 - #13, // #13 - #14, // #14 - #15, // #15 - #16, // #16 - #17, // #17 - #18, // #18 - #19, // #19 - #20, // #20 - #21, // #21 - #22, // #22 - #23, // #23 - #24, // #24 - #25, // #25 - #26, // #26 - #27, // #27 - #28, // #28 - #29, // #29 - #30, // #30 - #31, // #31 - ' ', // ' ' - '!', // '!' - '"', // '"' - '#', // '#' - '$', // '$' - '%', // '%' - '&', // '&' - '''', // '''' - '(', // '(' - ')', // ')' - '*', // '*' - '+', // '+' - ',', // ',' - '-', // '-' - '.', // '.' - '/', // '/' - '0', // '0' - '1', // '1' - '2', // '2' - '3', // '3' - '4', // '4' - '5', // '5' - '6', // '6' - '7', // '7' - '8', // '8' - '9', // '9' - ':', // ':' - ';', // ';' - '<', // '<' - '=', // '=' - '>', // '>' - '?', // '?' - '@', // '@' - 'A', // 'A' - 'B', // 'B' - 'C', // 'C' - 'D', // 'D' - 'E', // 'E' - 'F', // 'F' - 'G', // 'G' - 'H', // 'H' - 'I', // 'I' - 'J', // 'J' - 'K', // 'K' - 'L', // 'L' - 'M', // 'M' - 'N', // 'N' - 'O', // 'O' - 'P', // 'P' - 'Q', // 'Q' - 'R', // 'R' - 'S', // 'S' - 'T', // 'T' - 'U', // 'U' - 'V', // 'V' - 'W', // 'W' - 'X', // 'X' - 'Y', // 'Y' - 'Z', // 'Z' - '[', // '[' - '\', // '\' - ']', // ']' - '^', // '^' - '_', // '_' - '`', // '`' - 'a', // 'a' - 'b', // 'b' - 'c', // 'c' - 'd', // 'd' - 'e', // 'e' - 'f', // 'f' - 'g', // 'g' - 'h', // 'h' - 'i', // 'i' - 'j', // 'j' - 'k', // 'k' - 'l', // 'l' - 'm', // 'm' - 'n', // 'n' - 'o', // 'o' - 'p', // 'p' - 'q', // 'q' - 'r', // 'r' - 's', // 's' - 't', // 't' - 'u', // 'u' - 'v', // 'v' - 'w', // 'w' - 'x', // 'x' - 'y', // 'y' - 'z', // 'z' - '{', // '{' - '|', // '|' - '}', // '}' - '~', // '~' - #127, // #127 - #226#130#172, // #128 - #217#190, // #129 - #226#128#154, // #130 - #198#146, // #131 - #226#128#158, // #132 - #226#128#166, // #133 - #226#128#160, // #134 - #226#128#161, // #135 - #203#134, // #136 - #226#128#176, // #137 - #217#185, // #138 - #226#128#185, // #139 - #197#146, // #140 - #218#134, // #141 - #218#152, // #142 - #218#136, // #143 - #218#175, // #144 - #226#128#152, // #145 - #226#128#153, // #146 - #226#128#156, // #147 - #226#128#157, // #148 - #226#128#162, // #149 - #226#128#147, // #150 - #226#128#148, // #151 - #218#169, // #152 - #226#132#162, // #153 - #218#145, // #154 - #226#128#186, // #155 - #197#147, // #156 - #226#128#140, // #157 - #226#128#141, // #158 - #218#186, // #159 - #194#160, // #160 - #216#140, // #161 - #194#162, // #162 - #194#163, // #163 - #194#164, // #164 - #194#165, // #165 - #194#166, // #166 - #194#167, // #167 - #194#168, // #168 - #194#169, // #169 - #218#190, // #170 - #194#171, // #171 - #194#172, // #172 - #194#173, // #173 - #194#174, // #174 - #194#175, // #175 - #194#176, // #176 - #194#177, // #177 - #194#178, // #178 - #194#179, // #179 - #194#180, // #180 - #194#181, // #181 - #194#182, // #182 - #194#183, // #183 - #194#184, // #184 - #194#185, // #185 - #216#155, // #186 - #194#187, // #187 - #194#188, // #188 - #194#189, // #189 - #194#190, // #190 - #216#159, // #191 - #219#129, // #192 - #216#161, // #193 - #216#162, // #194 - #216#163, // #195 - #216#164, // #196 - #216#165, // #197 - #216#166, // #198 - #216#167, // #199 - #216#168, // #200 - #216#169, // #201 - #216#170, // #202 - #216#171, // #203 - #216#172, // #204 - #216#173, // #205 - #216#174, // #206 - #216#175, // #207 - #216#176, // #208 - #216#177, // #209 - #216#178, // #210 - #216#179, // #211 - #216#180, // #212 - #216#181, // #213 - #216#182, // #214 - #195#151, // #215 - #216#183, // #216 - #216#184, // #217 - #216#185, // #218 - #216#186, // #219 - #217#128, // #220 - #217#129, // #221 - #217#130, // #222 - #217#131, // #223 - #195#160, // #224 - #217#132, // #225 - #195#162, // #226 - #217#133, // #227 - #217#134, // #228 - #217#135, // #229 - #217#136, // #230 - #195#167, // #231 - #195#168, // #232 - #195#169, // #233 - #195#170, // #234 - #195#171, // #235 - #217#137, // #236 - #217#138, // #237 - #195#174, // #238 - #195#175, // #239 - #217#139, // #240 - #217#140, // #241 - #217#141, // #242 - #217#142, // #243 - #195#180, // #244 - #217#143, // #245 - #217#144, // #246 - #195#183, // #247 - #217#145, // #248 - #195#185, // #249 - #217#146, // #250 - #195#187, // #251 - #195#188, // #252 - #226#128#142, // #253 - #226#128#143, // #254 - #219#146 // #255 - ); - - ArrayCP1257ToUTF8: TCharToUTF8Table = ( - #0, // #0 - #1, // #1 - #2, // #2 - #3, // #3 - #4, // #4 - #5, // #5 - #6, // #6 - #7, // #7 - #8, // #8 - #9, // #9 - #10, // #10 - #11, // #11 - #12, // #12 - #13, // #13 - #14, // #14 - #15, // #15 - #16, // #16 - #17, // #17 - #18, // #18 - #19, // #19 - #20, // #20 - #21, // #21 - #22, // #22 - #23, // #23 - #24, // #24 - #25, // #25 - #26, // #26 - #27, // #27 - #28, // #28 - #29, // #29 - #30, // #30 - #31, // #31 - ' ', // ' ' - '!', // '!' - '"', // '"' - '#', // '#' - '$', // '$' - '%', // '%' - '&', // '&' - '''', // '''' - '(', // '(' - ')', // ')' - '*', // '*' - '+', // '+' - ',', // ',' - '-', // '-' - '.', // '.' - '/', // '/' - '0', // '0' - '1', // '1' - '2', // '2' - '3', // '3' - '4', // '4' - '5', // '5' - '6', // '6' - '7', // '7' - '8', // '8' - '9', // '9' - ':', // ':' - ';', // ';' - '<', // '<' - '=', // '=' - '>', // '>' - '?', // '?' - '@', // '@' - 'A', // 'A' - 'B', // 'B' - 'C', // 'C' - 'D', // 'D' - 'E', // 'E' - 'F', // 'F' - 'G', // 'G' - 'H', // 'H' - 'I', // 'I' - 'J', // 'J' - 'K', // 'K' - 'L', // 'L' - 'M', // 'M' - 'N', // 'N' - 'O', // 'O' - 'P', // 'P' - 'Q', // 'Q' - 'R', // 'R' - 'S', // 'S' - 'T', // 'T' - 'U', // 'U' - 'V', // 'V' - 'W', // 'W' - 'X', // 'X' - 'Y', // 'Y' - 'Z', // 'Z' - '[', // '[' - '\', // '\' - ']', // ']' - '^', // '^' - '_', // '_' - '`', // '`' - 'a', // 'a' - 'b', // 'b' - 'c', // 'c' - 'd', // 'd' - 'e', // 'e' - 'f', // 'f' - 'g', // 'g' - 'h', // 'h' - 'i', // 'i' - 'j', // 'j' - 'k', // 'k' - 'l', // 'l' - 'm', // 'm' - 'n', // 'n' - 'o', // 'o' - 'p', // 'p' - 'q', // 'q' - 'r', // 'r' - 's', // 's' - 't', // 't' - 'u', // 'u' - 'v', // 'v' - 'w', // 'w' - 'x', // 'x' - 'y', // 'y' - 'z', // 'z' - '{', // '{' - '|', // '|' - '}', // '}' - '~', // '~' - #127, // #127 - #226#130#172, // #128 - '', // #129 - #226#128#154, // #130 - '', // #131 - #226#128#158, // #132 - #226#128#166, // #133 - #226#128#160, // #134 - #226#128#161, // #135 - '', // #136 - #226#128#176, // #137 - '', // #138 - #226#128#185, // #139 - '', // #140 - #194#168, // #141 - #203#135, // #142 - #194#184, // #143 - '', // #144 - #226#128#152, // #145 - #226#128#153, // #146 - #226#128#156, // #147 - #226#128#157, // #148 - #226#128#162, // #149 - #226#128#147, // #150 - #226#128#148, // #151 - '', // #152 - #226#132#162, // #153 - '', // #154 - #226#128#186, // #155 - '', // #156 - #194#175, // #157 - #203#155, // #158 - '', // #159 - #194#160, // #160 - '', // #161 - #194#162, // #162 - #194#163, // #163 - #194#164, // #164 - '', // #165 - #194#166, // #166 - #194#167, // #167 - #195#152, // #168 - #194#169, // #169 - #197#150, // #170 - #194#171, // #171 - #194#172, // #172 - #194#173, // #173 - #194#174, // #174 - #195#134, // #175 - #194#176, // #176 - #194#177, // #177 - #194#178, // #178 - #194#179, // #179 - #194#180, // #180 - #194#181, // #181 - #194#182, // #182 - #194#183, // #183 - #195#184, // #184 - #194#185, // #185 - #197#151, // #186 - #194#187, // #187 - #194#188, // #188 - #194#189, // #189 - #194#190, // #190 - #195#166, // #191 - #196#132, // #192 - #196#174, // #193 - #196#128, // #194 - #196#134, // #195 - #195#132, // #196 - #195#133, // #197 - #196#152, // #198 - #196#146, // #199 - #196#140, // #200 - #195#137, // #201 - #197#185, // #202 - #196#150, // #203 - #196#162, // #204 - #196#182, // #205 - #196#170, // #206 - #196#187, // #207 - #197#160, // #208 - #197#131, // #209 - #197#133, // #210 - #195#147, // #211 - #197#140, // #212 - #195#149, // #213 - #195#150, // #214 - #195#151, // #215 - #197#178, // #216 - #197#129, // #217 - #197#154, // #218 - #197#170, // #219 - #195#156, // #220 - #197#187, // #221 - #197#189, // #222 - #195#159, // #223 - #196#133, // #224 - #196#175, // #225 - #196#129, // #226 - #196#135, // #227 - #195#164, // #228 - #195#165, // #229 - #196#153, // #230 - #196#147, // #231 - #196#141, // #232 - #195#169, // #233 - #197#186, // #234 - #196#151, // #235 - #196#163, // #236 - #196#183, // #237 - #196#171, // #238 - #196#188, // #239 - #197#161, // #240 - #197#132, // #241 - #197#134, // #242 - #195#179, // #243 - #197#141, // #244 - #195#181, // #245 - #195#182, // #246 - #195#183, // #247 - #197#179, // #248 - #197#130, // #249 - #197#155, // #250 - #197#171, // #251 - #195#188, // #252 - #197#188, // #253 - #197#190, // #254 - #203#153 // #255 - ); - - ArrayCP1258ToUTF8: TCharToUTF8Table = ( - #0, // #0 - #1, // #1 - #2, // #2 - #3, // #3 - #4, // #4 - #5, // #5 - #6, // #6 - #7, // #7 - #8, // #8 - #9, // #9 - #10, // #10 - #11, // #11 - #12, // #12 - #13, // #13 - #14, // #14 - #15, // #15 - #16, // #16 - #17, // #17 - #18, // #18 - #19, // #19 - #20, // #20 - #21, // #21 - #22, // #22 - #23, // #23 - #24, // #24 - #25, // #25 - #26, // #26 - #27, // #27 - #28, // #28 - #29, // #29 - #30, // #30 - #31, // #31 - ' ', // ' ' - '!', // '!' - '"', // '"' - '#', // '#' - '$', // '$' - '%', // '%' - '&', // '&' - '''', // '''' - '(', // '(' - ')', // ')' - '*', // '*' - '+', // '+' - ',', // ',' - '-', // '-' - '.', // '.' - '/', // '/' - '0', // '0' - '1', // '1' - '2', // '2' - '3', // '3' - '4', // '4' - '5', // '5' - '6', // '6' - '7', // '7' - '8', // '8' - '9', // '9' - ':', // ':' - ';', // ';' - '<', // '<' - '=', // '=' - '>', // '>' - '?', // '?' - '@', // '@' - 'A', // 'A' - 'B', // 'B' - 'C', // 'C' - 'D', // 'D' - 'E', // 'E' - 'F', // 'F' - 'G', // 'G' - 'H', // 'H' - 'I', // 'I' - 'J', // 'J' - 'K', // 'K' - 'L', // 'L' - 'M', // 'M' - 'N', // 'N' - 'O', // 'O' - 'P', // 'P' - 'Q', // 'Q' - 'R', // 'R' - 'S', // 'S' - 'T', // 'T' - 'U', // 'U' - 'V', // 'V' - 'W', // 'W' - 'X', // 'X' - 'Y', // 'Y' - 'Z', // 'Z' - '[', // '[' - '\', // '\' - ']', // ']' - '^', // '^' - '_', // '_' - '`', // '`' - 'a', // 'a' - 'b', // 'b' - 'c', // 'c' - 'd', // 'd' - 'e', // 'e' - 'f', // 'f' - 'g', // 'g' - 'h', // 'h' - 'i', // 'i' - 'j', // 'j' - 'k', // 'k' - 'l', // 'l' - 'm', // 'm' - 'n', // 'n' - 'o', // 'o' - 'p', // 'p' - 'q', // 'q' - 'r', // 'r' - 's', // 's' - 't', // 't' - 'u', // 'u' - 'v', // 'v' - 'w', // 'w' - 'x', // 'x' - 'y', // 'y' - 'z', // 'z' - '{', // '{' - '|', // '|' - '}', // '}' - '~', // '~' - #127, // #127 - #226#130#172, // #128 - '', // #129 - #226#128#154, // #130 - #198#146, // #131 - #226#128#158, // #132 - #226#128#166, // #133 - #226#128#160, // #134 - #226#128#161, // #135 - #203#134, // #136 - #226#128#176, // #137 - '', // #138 - #226#128#185, // #139 - #197#146, // #140 - '', // #141 - '', // #142 - '', // #143 - '', // #144 - #226#128#152, // #145 - #226#128#153, // #146 - #226#128#156, // #147 - #226#128#157, // #148 - #226#128#162, // #149 - #226#128#147, // #150 - #226#128#148, // #151 - #203#156, // #152 - #226#132#162, // #153 - '', // #154 - #226#128#186, // #155 - #197#147, // #156 - '', // #157 - '', // #158 - #197#184, // #159 - #194#160, // #160 - #194#161, // #161 - #194#162, // #162 - #194#163, // #163 - #194#164, // #164 - #194#165, // #165 - #194#166, // #166 - #194#167, // #167 - #194#168, // #168 - #194#169, // #169 - #194#170, // #170 - #194#171, // #171 - #194#172, // #172 - #194#173, // #173 - #194#174, // #174 - #194#175, // #175 - #194#176, // #176 - #194#177, // #177 - #194#178, // #178 - #194#179, // #179 - #194#180, // #180 - #194#181, // #181 - #194#182, // #182 - #194#183, // #183 - #194#184, // #184 - #194#185, // #185 - #194#186, // #186 - #194#187, // #187 - #194#188, // #188 - #194#189, // #189 - #194#190, // #190 - #194#191, // #191 - #195#128, // #192 - #195#129, // #193 - #195#130, // #194 - #196#130, // #195 - #195#132, // #196 - #195#133, // #197 - #195#134, // #198 - #195#135, // #199 - #195#136, // #200 - #195#137, // #201 - #195#138, // #202 - #195#139, // #203 - #204#128, // #204 - #195#141, // #205 - #195#142, // #206 - #195#143, // #207 - #196#144, // #208 - #195#145, // #209 - #204#137, // #210 - #195#147, // #211 - #195#148, // #212 - #198#160, // #213 - #195#150, // #214 - #195#151, // #215 - #195#152, // #216 - #195#153, // #217 - #195#154, // #218 - #195#155, // #219 - #195#156, // #220 - #198#175, // #221 - #204#131, // #222 - #195#159, // #223 - #195#160, // #224 - #195#161, // #225 - #195#162, // #226 - #196#131, // #227 - #195#164, // #228 - #195#165, // #229 - #195#166, // #230 - #195#167, // #231 - #195#168, // #232 - #195#169, // #233 - #195#170, // #234 - #195#171, // #235 - #204#129, // #236 - #195#173, // #237 - #195#174, // #238 - #195#175, // #239 - #196#145, // #240 - #195#177, // #241 - #204#163, // #242 - #195#179, // #243 - #195#180, // #244 - #198#161, // #245 - #195#182, // #246 - #195#183, // #247 - #195#184, // #248 - #195#185, // #249 - #195#186, // #250 - #195#187, // #251 - #195#188, // #252 - #198#176, // #253 - #226#130#171, // #254 - #195#191 // #255 - ); - -function UTF8BOMToUTF8(const s: string): string; -begin - Result:=copy(s,4,length(s)); -end; - -function ISO_8859_1ToUTF8(const s: string): string; -begin - Result:=SingleByteToUTF8(s,ArrayISO_8859_1ToUTF8); -end; - -function CP1250ToUTF8(const s: string): string; -begin - Result:=SingleByteToUTF8(s,ArrayCP1250ToUTF8); -end; - -function CP1251ToUTF8(const s: string): string; -begin - Result:=SingleByteToUTF8(s,ArrayCP1251ToUTF8); -end; - -function CP1252ToUTF8(const s: string): string; -begin - Result:=SingleByteToUTF8(s,ArrayCP1252ToUTF8); -end; - -function CP1253ToUTF8(const s: string): string; -begin - Result:=SingleByteToUTF8(s,ArrayCP1253ToUTF8); -end; - -function CP1254ToUTF8(const s: string): string; -begin - Result:=SingleByteToUTF8(s,ArrayCP1254ToUTF8); -end; - -function CP1255ToUTF8(const s: string): string; -begin - Result:=SingleByteToUTF8(s,ArrayCP1255ToUTF8); -end; - -function CP1256ToUTF8(const s: string): string; -begin - Result:=SingleByteToUTF8(s,ArrayCP1256ToUTF8); -end; - -function CP1257ToUTF8(const s: string): string; -begin - Result:=SingleByteToUTF8(s,ArrayCP1257ToUTF8); -end; - -function CP1258ToUTF8(const s: string): string; -begin - Result:=SingleByteToUTF8(s,ArrayCP1258ToUTF8); -end; - -function SingleByteToUTF8(const s: string; const Table: TCharToUTF8Table - ): string; -var - len: Integer; - i: Integer; - Src: PChar; - Dest: PChar; - p: PChar; - c: Char; -begin - if s='' then begin - Result:=s; - exit; - end; - len:=length(s); - SetLength(Result,len*4);// UTF-8 is at most 4 bytes - Src:=PChar(s); - Dest:=PChar(Result); - for i:=1 to len do begin - c:=Src^; - inc(Src); - if ord(c)<128 then begin - Dest^:=c; - inc(Dest); - end else begin - p:=Table[c]; - if p<>nil then begin - while p^<>#0 do begin - Dest^:=p^; - inc(p); - inc(Dest); - end; - end; - end; - end; - SetLength(Result,PtrUInt(Dest)-PtrUInt(Result)); -end; - -function UnicodeToISO_8859_1(Unicode: cardinal): integer; -begin - case Unicode of - 0..255: Result:=Unicode; - else Result:=-1; - end; -end; - -function UnicodeToCP1250(Unicode: cardinal): integer; -begin - case Unicode of - 0..127: Result:=Unicode; - 160: Result:=160; - 164: Result:=164; - 166..169: Result:=Unicode; - 171..174: Result:=Unicode; - 176..177: Result:=Unicode; - 180..184: Result:=Unicode; - 187: Result:=187; - 193..194: Result:=Unicode; - 196: Result:=196; - 199: Result:=199; - 201: Result:=201; - 203: Result:=203; - 205..206: Result:=Unicode; - 211..212: Result:=Unicode; - 214..215: Result:=Unicode; - 218: Result:=218; - 220..221: Result:=Unicode; - 223: Result:=223; - 225..226: Result:=Unicode; - 228: Result:=228; - 231: Result:=231; - 233: Result:=233; - 235: Result:=235; - 237..238: Result:=Unicode; - 243..244: Result:=Unicode; - 246..247: Result:=Unicode; - 250: Result:=250; - 252..253: Result:=Unicode; - 258: Result:=195; - 259: Result:=227; - 260: Result:=165; - 261: Result:=185; - 262: Result:=198; - 263: Result:=230; - 268: Result:=200; - 269: Result:=232; - 270: Result:=207; - 271: Result:=239; - 272: Result:=208; - 273: Result:=240; - 280: Result:=202; - 281: Result:=234; - 282: Result:=204; - 283: Result:=236; - 313: Result:=197; - 314: Result:=229; - 317: Result:=188; - 318: Result:=190; - 321: Result:=163; - 322: Result:=179; - 323: Result:=209; - 324: Result:=241; - 327: Result:=210; - 328: Result:=242; - 336: Result:=213; - 337: Result:=245; - 340: Result:=192; - 341: Result:=224; - 344: Result:=216; - 345: Result:=248; - 346: Result:=140; - 347: Result:=156; - 350: Result:=170; - 351: Result:=186; - 352: Result:=138; - 353: Result:=154; - 354: Result:=222; - 355: Result:=254; - 356: Result:=141; - 357: Result:=157; - 366: Result:=217; - 367: Result:=249; - 368: Result:=219; - 369: Result:=251; - 377: Result:=143; - 378: Result:=159; - 379: Result:=175; - 380: Result:=191; - 381: Result:=142; - 382: Result:=158; - 711: Result:=161; - 728: Result:=162; - 729: Result:=255; - 731: Result:=178; - 733: Result:=189; - 8211..8212: Result:=Unicode-8061; - 8216..8217: Result:=Unicode-8071; - 8218: Result:=130; - 8220..8221: Result:=Unicode-8073; - 8222: Result:=132; - 8224..8225: Result:=Unicode-8090; - 8226: Result:=149; - 8230: Result:=133; - 8240: Result:=137; - 8249: Result:=139; - 8250: Result:=155; - 8364: Result:=128; - 8482: Result:=153; - else Result:=-1; - end; -end; - -function UnicodeToCP1251(Unicode: cardinal): integer; -begin - case Unicode of - 0..127: Result:=Unicode; - 160: Result:=160; - 164: Result:=164; - 166..167: Result:=Unicode; - 169: Result:=169; - 171..174: Result:=Unicode; - 176..177: Result:=Unicode; - 181..183: Result:=Unicode; - 187: Result:=187; - 1025: Result:=168; - 1026..1027: Result:=Unicode-898; - 1028: Result:=170; - 1029: Result:=189; - 1030: Result:=178; - 1031: Result:=175; - 1032: Result:=163; - 1033: Result:=138; - 1034: Result:=140; - 1035: Result:=142; - 1036: Result:=141; - 1038: Result:=161; - 1039: Result:=143; - 1040..1103: Result:=Unicode-848; - 1105: Result:=184; - 1106: Result:=144; - 1107: Result:=131; - 1108: Result:=186; - 1109: Result:=190; - 1110: Result:=179; - 1111: Result:=191; - 1112: Result:=188; - 1113: Result:=154; - 1114: Result:=156; - 1115: Result:=158; - 1116: Result:=157; - 1118: Result:=162; - 1119: Result:=159; - 1168: Result:=165; - 1169: Result:=180; - 8211..8212: Result:=Unicode-8061; - 8216..8217: Result:=Unicode-8071; - 8218: Result:=130; - 8220..8221: Result:=Unicode-8073; - 8222: Result:=132; - 8224..8225: Result:=Unicode-8090; - 8226: Result:=149; - 8230: Result:=133; - 8240: Result:=137; - 8249: Result:=139; - 8250: Result:=155; - 8364: Result:=136; - 8470: Result:=185; - 8482: Result:=153; - else Result:=-1; - end; -end; - -function UnicodeToCP1252(Unicode: cardinal): integer; -begin - case Unicode of - 0..127: Result:=Unicode; - 160..255: Result:=Unicode; - 338: Result:=140; - 339: Result:=156; - 352: Result:=138; - 353: Result:=154; - 376: Result:=159; - 381: Result:=142; - 382: Result:=158; - 402: Result:=131; - 710: Result:=136; - 732: Result:=152; - 8211..8212: Result:=Unicode-8061; - 8216..8217: Result:=Unicode-8071; - 8218: Result:=130; - 8220..8221: Result:=Unicode-8073; - 8222: Result:=132; - 8224..8225: Result:=Unicode-8090; - 8226: Result:=149; - 8230: Result:=133; - 8240: Result:=137; - 8249: Result:=139; - 8250: Result:=155; - 8364: Result:=128; - 8482: Result:=153; - else Result:=-1; - end; -end; - -function UnicodeToCP1253(Unicode: cardinal): integer; -begin - case Unicode of - 0..127: Result:=Unicode; - 160: Result:=160; - 163..169: Result:=Unicode; - 171..174: Result:=Unicode; - 176..179: Result:=Unicode; - 181..183: Result:=Unicode; - 187: Result:=187; - 189: Result:=189; - 402: Result:=131; - 900: Result:=180; - 901..902: Result:=Unicode-740; - 904..906: Result:=Unicode-720; - 908: Result:=188; - 910..929: Result:=Unicode-720; - 931..974: Result:=Unicode-720; - 8211..8212: Result:=Unicode-8061; - 8213: Result:=175; - 8216..8217: Result:=Unicode-8071; - 8218: Result:=130; - 8220..8221: Result:=Unicode-8073; - 8222: Result:=132; - 8224..8225: Result:=Unicode-8090; - 8226: Result:=149; - 8230: Result:=133; - 8240: Result:=137; - 8249: Result:=139; - 8250: Result:=155; - 8364: Result:=128; - 8482: Result:=153; - else Result:=-1; - end; -end; - -function UnicodeToCP1254(Unicode: cardinal): integer; -begin - case Unicode of - 0..127: Result:=Unicode; - 160..207: Result:=Unicode; - 209..220: Result:=Unicode; - 223..239: Result:=Unicode; - 241..252: Result:=Unicode; - 255: Result:=255; - 286: Result:=208; - 287: Result:=240; - 304: Result:=221; - 305: Result:=253; - 338: Result:=140; - 339: Result:=156; - 350: Result:=222; - 351: Result:=254; - 352: Result:=138; - 353: Result:=154; - 376: Result:=159; - 402: Result:=131; - 710: Result:=136; - 732: Result:=152; - 8211..8212: Result:=Unicode-8061; - 8216..8217: Result:=Unicode-8071; - 8218: Result:=130; - 8220..8221: Result:=Unicode-8073; - 8222: Result:=132; - 8224..8225: Result:=Unicode-8090; - 8226: Result:=149; - 8230: Result:=133; - 8240: Result:=137; - 8249: Result:=139; - 8250: Result:=155; - 8364: Result:=128; - 8482: Result:=153; - else Result:=-1; - end; -end; - -function UnicodeToCP1255(Unicode: cardinal): integer; -begin - case Unicode of - 0..127: Result:=Unicode; - 160..163: Result:=Unicode; - 165..169: Result:=Unicode; - 171..185: Result:=Unicode; - 187..191: Result:=Unicode; - 215: Result:=170; - 247: Result:=186; - 402: Result:=131; - 710: Result:=136; - 732: Result:=152; - 1456..1465: Result:=Unicode-1264; - 1467..1475: Result:=Unicode-1264; - 1488..1514: Result:=Unicode-1264; - 1520..1524: Result:=Unicode-1308; - 8206..8207: Result:=Unicode-7953; - 8211..8212: Result:=Unicode-8061; - 8216..8217: Result:=Unicode-8071; - 8218: Result:=130; - 8220..8221: Result:=Unicode-8073; - 8222: Result:=132; - 8224..8225: Result:=Unicode-8090; - 8226: Result:=149; - 8230: Result:=133; - 8240: Result:=137; - 8249: Result:=139; - 8250: Result:=155; - 8362: Result:=164; - 8364: Result:=128; - 8482: Result:=153; - else Result:=-1; - end; -end; - -function UnicodeToCP1256(Unicode: cardinal): integer; -begin - case Unicode of - 0..127: Result:=Unicode; - 160: Result:=160; - 162..169: Result:=Unicode; - 171..185: Result:=Unicode; - 187..190: Result:=Unicode; - 215: Result:=215; - 224: Result:=224; - 226: Result:=226; - 231..235: Result:=Unicode; - 238..239: Result:=Unicode; - 244: Result:=244; - 247: Result:=247; - 249: Result:=249; - 251..252: Result:=Unicode; - 338: Result:=140; - 339: Result:=156; - 402: Result:=131; - 710: Result:=136; - 1548: Result:=161; - 1563: Result:=186; - 1567: Result:=191; - 1569..1590: Result:=Unicode-1376; - 1591..1594: Result:=Unicode-1375; - 1600..1603: Result:=Unicode-1380; - 1604: Result:=225; - 1605..1608: Result:=Unicode-1378; - 1609..1610: Result:=Unicode-1373; - 1611..1614: Result:=Unicode-1371; - 1615..1616: Result:=Unicode-1370; - 1617: Result:=248; - 1618: Result:=250; - 1657: Result:=138; - 1662: Result:=129; - 1670: Result:=141; - 1672: Result:=143; - 1681: Result:=154; - 1688: Result:=142; - 1705: Result:=152; - 1711: Result:=144; - 1722: Result:=159; - 1726: Result:=170; - 1729: Result:=192; - 1746: Result:=255; - 8204..8205: Result:=Unicode-8047; - 8206..8207: Result:=Unicode-7953; - 8211..8212: Result:=Unicode-8061; - 8216..8217: Result:=Unicode-8071; - 8218: Result:=130; - 8220..8221: Result:=Unicode-8073; - 8222: Result:=132; - 8224..8225: Result:=Unicode-8090; - 8226: Result:=149; - 8230: Result:=133; - 8240: Result:=137; - 8249: Result:=139; - 8250: Result:=155; - 8364: Result:=128; - 8482: Result:=153; - else Result:=-1; - end; -end; - -function UnicodeToCP1257(Unicode: cardinal): integer; -begin - case Unicode of - 0..127: Result:=Unicode; - 160: Result:=160; - 162..164: Result:=Unicode; - 166..167: Result:=Unicode; - 168: Result:=141; - 169: Result:=169; - 171..174: Result:=Unicode; - 175: Result:=157; - 176..183: Result:=Unicode; - 184: Result:=143; - 185: Result:=185; - 187..190: Result:=Unicode; - 196..197: Result:=Unicode; - 198: Result:=175; - 201: Result:=201; - 211: Result:=211; - 213..215: Result:=Unicode; - 216: Result:=168; - 220: Result:=220; - 223: Result:=223; - 228..229: Result:=Unicode; - 230: Result:=191; - 233: Result:=233; - 243: Result:=243; - 245..247: Result:=Unicode; - 248: Result:=184; - 252: Result:=252; - 256: Result:=194; - 257: Result:=226; - 260: Result:=192; - 261: Result:=224; - 262: Result:=195; - 263: Result:=227; - 268: Result:=200; - 269: Result:=232; - 274: Result:=199; - 275: Result:=231; - 278: Result:=203; - 279: Result:=235; - 280: Result:=198; - 281: Result:=230; - 290: Result:=204; - 291: Result:=236; - 298: Result:=206; - 299: Result:=238; - 302: Result:=193; - 303: Result:=225; - 310: Result:=205; - 311: Result:=237; - 315: Result:=207; - 316: Result:=239; - 321: Result:=217; - 322: Result:=249; - 323: Result:=209; - 324: Result:=241; - 325: Result:=210; - 326: Result:=242; - 332: Result:=212; - 333: Result:=244; - 342: Result:=170; - 343: Result:=186; - 346: Result:=218; - 347: Result:=250; - 352: Result:=208; - 353: Result:=240; - 362: Result:=219; - 363: Result:=251; - 370: Result:=216; - 371: Result:=248; - 377: Result:=202; - 378: Result:=234; - 379: Result:=221; - 380: Result:=253; - 381: Result:=222; - 382: Result:=254; - 711: Result:=142; - 729: Result:=255; - 731: Result:=158; - 8211..8212: Result:=Unicode-8061; - 8216..8217: Result:=Unicode-8071; - 8218: Result:=130; - 8220..8221: Result:=Unicode-8073; - 8222: Result:=132; - 8224..8225: Result:=Unicode-8090; - 8226: Result:=149; - 8230: Result:=133; - 8240: Result:=137; - 8249: Result:=139; - 8250: Result:=155; - 8364: Result:=128; - 8482: Result:=153; - else Result:=-1; - end; -end; - -function UnicodeToCP1258(Unicode: cardinal): integer; -begin - case Unicode of - 0..127: Result:=Unicode; - 160..194: Result:=Unicode; - 196..203: Result:=Unicode; - 205..207: Result:=Unicode; - 209: Result:=209; - 211..212: Result:=Unicode; - 214..220: Result:=Unicode; - 223..226: Result:=Unicode; - 228..235: Result:=Unicode; - 237..239: Result:=Unicode; - 241: Result:=241; - 243..244: Result:=Unicode; - 246..252: Result:=Unicode; - 255: Result:=255; - 258: Result:=195; - 259: Result:=227; - 272: Result:=208; - 273: Result:=240; - 338: Result:=140; - 339: Result:=156; - 376: Result:=159; - 402: Result:=131; - 416: Result:=213; - 417: Result:=245; - 431: Result:=221; - 432: Result:=253; - 710: Result:=136; - 732: Result:=152; - 768: Result:=204; - 769: Result:=236; - 771: Result:=222; - 777: Result:=210; - 803: Result:=242; - 8211..8212: Result:=Unicode-8061; - 8216..8217: Result:=Unicode-8071; - 8218: Result:=130; - 8220..8221: Result:=Unicode-8073; - 8222: Result:=132; - 8224..8225: Result:=Unicode-8090; - 8226: Result:=149; - 8230: Result:=133; - 8240: Result:=137; - 8249: Result:=139; - 8250: Result:=155; - 8363: Result:=254; - 8364: Result:=128; - 8482: Result:=153; - else Result:=-1; - end; -end; - -function UTF8ToUTF8BOM(const s: string): string; -begin - Result:=#$EF#$BB#$BF+s; -end; - -function UTF8ToISO_8859_1(const s: string): string; -begin - Result:=UTF8ToSingleByte(s,@UnicodeToISO_8859_1); -end; - -function UTF8ToCP1250(const s: string): string; -begin - Result:=UTF8ToSingleByte(s,@UnicodeToCP1250); -end; - -function UTF8ToCP1251(const s: string): string; -begin - Result:=UTF8ToSingleByte(s,@UnicodeToCP1251); -end; - -function UTF8ToCP1252(const s: string): string; -begin - Result:=UTF8ToSingleByte(s,@UnicodeToCP1252); -end; - -function UTF8ToCP1253(const s: string): string; -begin - Result:=UTF8ToSingleByte(s,@UnicodeToCP1253); -end; - -function UTF8ToCP1254(const s: string): string; -begin - Result:=UTF8ToSingleByte(s,@UnicodeToCP1254); -end; - -function UTF8ToCP1255(const s: string): string; -begin - Result:=UTF8ToSingleByte(s,@UnicodeToCP1255); -end; - -function UTF8ToCP1256(const s: string): string; -begin - Result:=UTF8ToSingleByte(s,@UnicodeToCP1256); -end; - -function UTF8ToCP1257(const s: string): string; -begin - Result:=UTF8ToSingleByte(s,@UnicodeToCP1257); -end; - -function UTF8ToCP1258(const s: string): string; -begin - Result:=UTF8ToSingleByte(s,@UnicodeToCP1258); -end; - -function UTF8ToSingleByte(const s: string; - const UTF8CharConvFunc: TUnicodeToCharID): string; -var - len: Integer; - Src: PChar; - Dest: PChar; - c: Char; - Unicode: LongWord; - CharLen: integer; - i: integer; -begin - if s='' then begin - Result:=''; - exit; - end; - len:=length(s); - SetLength(Result,len); - Src:=PChar(s); - Dest:=PChar(Result); - while len>0 do begin - c:=Src^; - if c<#128 then begin - Dest^:=c; - inc(Dest); - inc(Src); - dec(len); - end else begin - Unicode:=UTF8CharacterToUnicode(Src,CharLen); - inc(Src,CharLen); - dec(len,CharLen); - i:=UTF8CharConvFunc(Unicode); - if i>=0 then begin - Dest^:=chr(i); - inc(Dest); - end; - end; - end; - SetLength(Result,Dest-PChar(Result)); -end; - - -procedure GetSupportedEncodings(List: TStrings); -begin - List.Add('UTF-8'); - List.Add('UTF-8BOM'); - List.Add('Ansi'); - List.Add('CP1250'); - List.Add('CP1251'); - List.Add('CP1252'); - List.Add('CP1253'); - List.Add('CP1254'); - List.Add('CP1255'); - List.Add('CP1256'); - List.Add('CP1257'); - List.Add('CP1258'); - List.Add('CP866'); - List.Add('CP874'); - List.Add('ISO-8859-1'); - List.Add('KOI-8'); - List.Add('UCS-2LE'); - List.Add('UCS-2BE'); -end; - -function UTF8CharacterToUnicode(p: PChar; out CharLen: integer): Cardinal; -begin - if p<>nil then begin - if ord(p^)<%11000000 then begin - // regular single byte character (#0 is a normal char, this is pascal ;) - Result:=ord(p^); - CharLen:=1; - end - else if ((ord(p^) and %11100000) = %11000000) then begin - // could be double byte character - if (ord(p[1]) and %11000000) = %10000000 then begin - Result:=((ord(p^) and %00011111) shl 6) - or (ord(p[1]) and %00111111); - CharLen:=2; - end else begin - Result:=ord(p^); - CharLen:=1; - end; - end - else if ((ord(p^) and %11110000) = %11100000) then begin - // could be triple byte character - if ((ord(p[1]) and %11000000) = %10000000) - and ((ord(p[2]) and %11000000) = %10000000) then begin - Result:=((ord(p^) and %00011111) shl 12) - or ((ord(p[1]) and %00111111) shl 6) - or (ord(p[2]) and %00111111); - CharLen:=3; - end else begin - Result:=ord(p^); - CharLen:=1; - end; - end - else if ((ord(p^) and %11111000) = %11110000) then begin - // could be 4 byte character - if ((ord(p[1]) and %11000000) = %10000000) - and ((ord(p[2]) and %11000000) = %10000000) - and ((ord(p[3]) and %11000000) = %10000000) then begin - Result:=((ord(p^) and %00001111) shl 18) - or ((ord(p[1]) and %00111111) shl 12) - or ((ord(p[2]) and %00111111) shl 6) - or (ord(p[3]) and %00111111); - CharLen:=4; - end else begin - Result:=ord(p^); - CharLen:=1; - end; - end - else begin - // invalid character - Result:=ord(p^); - CharLen:=1; - end; - end else begin - Result:=0; - CharLen:=0; - end; -end; - -end. diff --git a/components/fpspreadsheet/fpspreadsheet.pas b/components/fpspreadsheet/fpspreadsheet.pas index da0810f49..4e7990068 100755 --- a/components/fpspreadsheet/fpspreadsheet.pas +++ b/components/fpspreadsheet/fpspreadsheet.pas @@ -14,7 +14,7 @@ unit fpspreadsheet; interface uses - Classes, SysUtils, AVL_Tree, fpsconvencoding; + Classes, SysUtils, AVL_Tree, lconvencoding; type TsSpreadsheetFormat = (sfExcel2, sfExcel3, sfExcel4, sfExcel5, sfExcel8, diff --git a/components/fpspreadsheet/laz_fpspreadsheet.lpk b/components/fpspreadsheet/laz_fpspreadsheet.lpk index a6ddaedee..84071573d 100644 --- a/components/fpspreadsheet/laz_fpspreadsheet.lpk +++ b/components/fpspreadsheet/laz_fpspreadsheet.lpk @@ -27,7 +27,7 @@ - + @@ -100,10 +100,6 @@ - - - - diff --git a/components/fpspreadsheet/laz_fpspreadsheet.pas b/components/fpspreadsheet/laz_fpspreadsheet.pas index 37fe42b35..8acfa4c05 100644 --- a/components/fpspreadsheet/laz_fpspreadsheet.pas +++ b/components/fpspreadsheet/laz_fpspreadsheet.pas @@ -11,7 +11,7 @@ uses xlsbiff5, xlsbiff8, xlsxooxml, fpsutils, fpszipper, uvirtuallayer_types, uvirtuallayer, uvirtuallayer_ole, uvirtuallayer_ole_helpers, uvirtuallayer_ole_types, uvirtuallayer_stream, fpolebasic, xlscommon, - fpsconvencoding, LazarusPackageIntf; + LazarusPackageIntf; implementation diff --git a/components/fpspreadsheet/xlsbiff2.pas b/components/fpspreadsheet/xlsbiff2.pas index f1f8835b3..b2668276f 100755 --- a/components/fpspreadsheet/xlsbiff2.pas +++ b/components/fpspreadsheet/xlsbiff2.pas @@ -34,7 +34,7 @@ interface uses Classes, SysUtils, - fpspreadsheet, xlscommon, fpsutils, fpsconvencoding; + fpspreadsheet, xlscommon, fpsutils, lconvencoding; type diff --git a/components/fpspreadsheet/xlsbiff5.pas b/components/fpspreadsheet/xlsbiff5.pas index b5d63ac6c..7a13957a1 100755 --- a/components/fpspreadsheet/xlsbiff5.pas +++ b/components/fpspreadsheet/xlsbiff5.pas @@ -69,7 +69,7 @@ uses {$else} fpolestorage, {$endif} - fpsutils, fpsconvencoding; + fpsutils, lconvencoding; type diff --git a/components/fpspreadsheet/xlscommon.pas b/components/fpspreadsheet/xlscommon.pas index 11aea7756..d7486d72a 100644 --- a/components/fpspreadsheet/xlscommon.pas +++ b/components/fpspreadsheet/xlscommon.pas @@ -9,7 +9,7 @@ interface uses Classes, SysUtils, fpspreadsheet, - fpsutils{, lconvencoding}; + fpsutils, lconvencoding; const { Formula constants TokenID values }