![]() |
Code Page-Name zu Identifier
Hallo,
gibt es eine Funktion, die mir zum Namen einer Code Page den zugehörigen Identifier liefert? Also bei Eingabe von "ISO-8859-1" sollte dann "28591" rauskommen. Siehe ![]() Ich könnte natürlich einfach die Liste in ein Array kloppen, aber solche Listen können sich ja ändern... Gruß xaromz |
Re: Code Page-Name zu Identifier
hach, diese Code Page Identifiers hab'sch gesucht (ohne den genauen Namen sucht man sich im MSDN ja zu tode :wall: ), aber wenn sich das tatsächlich ändern kann, dann wär ich an einer Lösung auch interessiert :angel2:
Wär praktisch, wenn ich "zuverlässig" ISO-8859-1 bis ISO-8859-10 in Unicode umwandeln könnte. nja ISO-8859-1 hab ich derzeit 1:1 übersetzt ... das scheint ja mit dem Unicode bis #255 übereinzustimmen |
Re: Code Page-Name zu Identifier
Zitat:
![]() |
Re: Code Page-Name zu Identifier
Dankö <(^_^<)
2 Minuten <-> 6,5 Monaten ... ich hoff mal der Threadersteller nimmt das nicht persölich :stupid: |
Re: Code Page-Name zu Identifier
Hallo,
Zitat:
Gruß xaromz |
Re: Code Page-Name zu Identifier
kannst sie ja auch gern noch verraten ... ma sehn was mir dann besser gefällt :angel:
|
Re: Code Page-Name zu Identifier
Hallo,
Zitat:
Delphi-Quellcode:
Füll einen Text mit seinem Charset rein und Du bekommst das entsprechende Unicode.
function ConvertText(const Text: AnsiString; Charset: Cardinal): WideString;
var CharsetInfo: TCharsetInfo; L: Integer; begin // Codepage besorgen TranslateCharsetInfo(Charset, CharsetInfo, TCI_SRCCHARSET); // Puffergröße ermitteln L := MultiByteToWideChar(CharsetInfo.ciACP, MB_PRECOMPOSED, @Text[1], Length(Text), nil, 0); // Puffer anlegen SetLength(Result, L); // Konvertieren MultiByteToWideChar(CharsetInfo.ciACP, MB_PRECOMPOSED, @Text[1], Length(Text), @Result[1], L); end; Gruß xaromz |
Re: Code Page-Name zu Identifier
Zum Ermitteln der Codepage-Namen kannst Du das GetCPInfoEx verwenden. Wenn Du nach dem Namen suchst, kannst Du dies im Callback von EnumSystemCodePages machen.
|
Re: Code Page-Name zu Identifier
gut, ich hab eh nur die Namen wie "ISO-8859-1" als String und müßte dann die nachfolgenden Daten entsprechend konvertieren.
wobei diese CodePages zum Mindestumfang gehören was ich da unterstüzen müßte und wenn ich direkt über die Namen suchen könnte, dann würde ja automatisch noch anderes gleich mit unterstüzt :thumb: also dann versuch ich's mal mit EnumSystemCodePages :) |
Re: Code Page-Name zu Identifier
CPInfoEx ist in Delphi nicht definiert (jedenfalls in D7, 2007 habe ich schon wieder gelöscht). Hier ein Code den ich verwende um z.B. eine Combobox mit den Namen zu füllen. Besonderheit: Das Object-Property der Liste wird als Codepage missbraucht ;)
Delphi-Quellcode:
unit CpFuncs;
interface uses windows, classes; type _cpinfoex = record MaxCharSize: UINT; { max length (bytes) of a char } DefaultChar: array[0..MAX_DEFAULTCHAR - 1] of Byte; { default character } LeadByte: array[0..MAX_LEADBYTES - 1] of Byte; { lead byte ranges } UnicodeDefaultChar : WCHAR; CodePage : UINT; CodePageName : array[0..MAX_PATH] of char; end; TCPInfoEx = _cpinfoex; {$EXTERNALSYM CPINFOEX} CPINFOEX = _cpinfoex; {$EXTERNALSYM GetCPInfoEx} procedure GetCodePageList(AList : TStrings); function GetCPInfoEx(CodePage: UINT; dwFlags : DWORD; var lpCPInfoEx: TCPInfoEx): BOOL; stdcall; function GetCPInfoEx; external kernel32 name 'GetCPInfoExA'; implementation uses Sysutils; var CodePageList : TStringList; function CpEnumProc(CodePage : PChar) : Cardinal ; stdcall; var CpInfoEx : TCPInfoEx; Cp : cardinal; begin Cp := StrToIntDef(CodePage,0); if IsValidCodePage(Cp) then begin GetCPInfoEx(Cp, 0, CpInfoEx); CodePageList.AddObject(Format('%s', [CpInfoEx.CodePageName]), TObject(Cp)); end; Result := 1; end; procedure GetCodePageList(AList : TStrings); begin CodePageList.Clear; AList.Clear; EnumSystemCodePages(@CpEnumProc, CP_SUPPORTED); AList.Assign(CodePageList); end; initialization CodePageList := TStringList.Create; finalization CodePageList.Free; end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz