AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

UTF-8 nach ASCII (die 1000ste)

Ein Thema von ernschd · begonnen am 21. Feb 2017 · letzter Beitrag vom 22. Feb 2017
Antwort Antwort
Seite 4 von 4   « Erste     234   
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#31

AW: UTF-8 nach ASCII (die 1000ste)

  Alt 22. Feb 2017, 12:25
Delphi-Quellcode:
var
  tt : Array [0..255] of Byte;

for i:=0 to 255 do
  tt:=i;

{-- from xDC -> x9A --}
tt[$DC]:=$9A;

procedure Translate(var instr:ansistring);
begin
  for i:=1 to length(instr) do
    instr[i]:=ansichar(tt[byte(instr[i])]);
end;
So sollte es funktionieren und Du bist Herr des Verfahrens
(ich hoffe die Klammern stimmen)
(ich würde noch diese Char/Byte - Konvertierung weglassen und das gleich als Array of Byte behandeln)

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#32

AW: UTF-8 nach ASCII (die 1000ste)

  Alt 22. Feb 2017, 12:36
Tja für das File musst Du natürlich noch festlegen was rausgeht:
Wenn ich das ganze mit einem kleinen Testprogramm versuche, bekomme ich leider ein anderes Ergebnis (Hexadezimal DC statt 9A):

Delphi-Quellcode:
program Project1;

{$APPTYPE CONSOLE}

{$R *.res}

uses System.SysUtils;

type oemString = type Ansistring(437) ;

var f: TextFile;
  ein: string;
  aus: oemString;

function StringtoOem(const Value : string) : oemString;
begin
    result := Value;
end;

begin
  AssignFile(f, 'c:\temp\kodier.txt');
(*   Festlegen der Codepage für das File.........   *)
  SetTextCodePage(f, 437);

  Rewrite(f);
  ein := 'Ü';
  aus := StringtoOem(ein);
  writeln(f, aus);
  CloseFile(f);
end.
Fritz Westermann
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#33

AW: UTF-8 nach ASCII (die 1000ste)

  Alt 22. Feb 2017, 12:53
Habe gerade noch geschaut wie das in der System.pas tatsächlich gehandelt wird.

Wenn es Dir nur darum geht in ein Textfile mit Write und Writeln zu schreiben reicht es aus bei der Erzeugung des Files
die richtige codepage zu setzen.
Also

Delphi-Quellcode:
procedure StringtoFileTest(const Value : string) ;
 Var f : TextFile;
 begin
   AssignFile(f, 'D:\Test\test.txt');
   SetTextCodePage(f, 437);
   rewrite(f);
   writeln(f, StringtoOem(Value));
   writeln(f, Value);
   closefile(f);
 end;

StringtoFileTest('Bücher');
ergibt im erzeugten File:


Zitat:
BšCHER
BšCHER
Write und Writeln überprüfen die CodePage des Files und wandeln wenn notwendig um.
Fritz Westermann
  Mit Zitat antworten Zitat
ernschd

Registriert seit: 16. Jan 2008
166 Beiträge
 
Delphi XE8 Professional
 
#34

AW: UTF-8 nach ASCII (die 1000ste)

  Alt 22. Feb 2017, 13:11
Perfekt! Jetzt habe ich gleich zwei funktionierende Methoden für die Umwandlung!

Vielen Dank an alle!
  Mit Zitat antworten Zitat
Ydobon

Registriert seit: 3. Mär 2006
264 Beiträge
 
Delphi 11 Alexandria
 
#35

AW: UTF-8 nach ASCII (die 1000ste)

  Alt 22. Feb 2017, 13:47
zu spät
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 4   « Erste     234   


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 07:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz