AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Mal wieder Kodierungsprobleme. ANSI UTF8 UTF16
Thema durchsuchen
Ansicht
Themen-Optionen

Mal wieder Kodierungsprobleme. ANSI UTF8 UTF16

Ein Thema von LTE5 · begonnen am 17. Nov 2017 · letzter Beitrag vom 20. Nov 2017
Antwort Antwort
LTE5

Registriert seit: 13. Nov 2017
355 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#1

AW: Mal wieder Kodierungsprobleme. ANSI UTF8

  Alt 17. Nov 2017, 23:00
Ich glaube greenmiles erster Satz aus Beitrag #20 spiegelt gerade meine Stimmung wieder

http://www.delphipraxis.net/180079-e...-fehler-3.html

Ich habe nicht mal Ahnung von Encodings. Denkst du wirklich ich habe Ahnung von dem was in #6 steht? Nee

ich bin ja nicht so, also hab ichs versucht. Ging nur leider in die hose. Egal welche Datei ich reinwerfe, es ist immer False.
Delphi-Quellcode:
 function IsUTF8(FileName: string): Boolean;
 var
  _FileStream: TFileStream;
  _Word: Word;
 begin
  _FileStream := TFileStream.Create(FileName, fmOpenRead);
  _FileStream.Read(_Word, SizeOf(_Word));

  try
   case _Word of
    $FEFF:
     Result := False; // UTF-16
    $FFFE:
     Result := False; // UTF-16
    $EFBB:
     Result := True; // UTF-8
   end;
  finally
   _FileStream.Free
  end;
 end;

Geändert von LTE5 (17. Nov 2017 um 23:23 Uhr)
  Mit Zitat antworten Zitat
mensch72

Registriert seit: 6. Feb 2008
838 Beiträge
 
#2

AW: Mal wieder Kodierungsprobleme. ANSI UTF8

  Alt 17. Nov 2017, 23:26
Stimmungen und Gefühle beim programmieren vermeide ich, weil letztendlich macht die CPU ja doch nur was man ihr gesagt hat und nicht das was man will.
(Selbst Frauen sind da einfacher, die machen zwar selten das was man ihnen sagt, aber oft doch das was (M)man will )

Delphi-Quellcode:
function IsUTF8(const data:TStream):boolean;
var
  Value:BYTE;
begin
Result:=False;

data.Position:=0;
while(data.Position<>data.Length) do begin
  Value:=GetByteAndMovePos(data);
  if((Value and $c0)=$c0) and (data.Position<>data.Length) then begin
    Value:=GetByteAndMovePos(data);
    if((Value and $80)=$00) then exit;
  end;
end;

Result:=True;
end;
Wenn dir 5Minuten für so ein paar Zeilen basierend auf #6 zu anstrengend sind, dann investiere eben weiter ständig überall sonst deine Nerven...




ps:
Sichwort "Intel-Speicherformat":
$EFBB: // MSBLSB
Result := True; // UTF-8
$BBEF: // LSBMSB
Result := True; // UTF-8

..."Was ich nicht verstehe ist, warum Google nicht voll von solchen Problemen ist"...
weil die meisten es BYTEbyBYTE auswerten und nicht als WORD, was bei IntelCPUs eben "gedreht" ist... aber alles kein Problem wenn man etwas in HEX denkt

Geändert von mensch72 (17. Nov 2017 um 23:39 Uhr)
  Mit Zitat antworten Zitat
LTE5

Registriert seit: 13. Nov 2017
355 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#3

AW: Mal wieder Kodierungsprobleme. ANSI UTF8

  Alt 17. Nov 2017, 23:29
Ich dachte man überprüft verschiedene Encodings so wie mein versuch da oben.
Nur mein Code da oben gibt $BBEF zurück, obwohl meine Datei UTF8 sogar mit BOM ist.

Am liebsten wäre mir natürlich alles ohne Streams. Es gibt nichts was ich mehr hasse als Streams.
Außerdem habe ich keine Ahnung woher ich Streams bekommen soll an den Stellen wo ich diese Prüfung durchführen müsste.
Mit Streams sind das bestimmt X Zeilen pro Aufruf mehr...

Was ich nicht verstehe ist, warum Google nicht voll von solchen Problemen ist. Das kann ja nur heißen, dass das total unwichtig ist.

Geändert von LTE5 (17. Nov 2017 um 23:32 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:34 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-2025 by Thomas Breitkreuz