ASCII to ANSI convert
am 04.10.2005 12:23:48 von Gerd Metje
Hallo,
ich habe ein Script zum Download einer Tabelle und speicherung als txt
Datei?
Jedoch benötige ich die Daten als ASCII und nicht im ANSI format.
Wie kann ich unter php von ANSI nach ASCII wandeln ?
Gerd
$query_text = "SELECT somedata from table";
$result = mysql_query($query_text, $connection);
Header("Content-Type: application/csv-tab-delimited-table");
Header("Content-disposition: filename=export.txt");
while ( $row = mysql_fetch_row($result)) {
php>??? convert $somedata to ascii ???<
print "$somedata"."\r\n";
}
Re: ASCII to ANSI convert
am 04.10.2005 13:07:33 von Hartmut Holzgraefe
Gerd Metje wrote:
> Wie kann ich unter php von ANSI nach ASCII wandeln ?
Da gibt es nicht viel zu wandeln, die unteren 128 Zeichen von
ASCII und ANSI (mal vermutend das du ANSI/ISO-8859-1 meinst)
sind gleich und die ANSI/ISO Zeichen >127 existieren in ASCII
einfach nicht.
function ansi2ascii($string, $repl =3D '?')
{
for ($n =3D 0; $n < strlen($string); $n++) {
if (ord($string{$n}) > 127) {
$string{$n} =3D $repl;
}
}
}
Oder du läßt das die Datenbank direkt erledigen indem du "ASCII"
als Client Charset einstellst:
mysql_query("SET NAMES ASCII");
PS: meine Kristallkugel sagt mir das du in Wirklichkeit von
"Windows ANSI" nach "MS-DOS OEM" wandeln willst?
--=20
Hartmut Holzgraefe, Senior Support Engineer .
MySQL AB, www.mysql.com
Re: ASCII to ANSI convert
am 04.10.2005 22:16:36 von Frank Mainz
Am Tue, 04 Oct 2005 13:07:33 +0200 schrieb Hartmut Holzgraefe:
Deine Funktion ist okay, ich würde aber das for anders schreiben.
> function ansi2ascii($string, $repl = '?')
> {
for ($n = 0, $l = strlen($string); $n < $l; $n++) {
> if (ord($string{$n}) > 127) {
> $string{$n} = $repl;
> }
> }
> }
Ist performanter, da nicht bei jedem Durchlauf die Stringlänge neu
berechnet werden muss. Normalerweise dürfte sie sich ja nicht ändern.
Frank
Re: ASCII to ANSI convert
am 04.10.2005 23:07:37 von Hartmut Holzgraefe
Frank Mainz wrote:
> Ist performanter, da nicht bei jedem Durchlauf die Stringlänge neu
> berechnet werden muss. Normalerweise dürfte sie sich ja nicht änder=
n.
Die Stringlänge wird in PHP nicht berechnet sondern ist bereits
Teil des internen ZVals. Der Overhead für den Funktionsaufruf
bleibt allerdings zugegebenermaßen.
--=20
Hartmut Holzgraefe, Senior Support Engineer .
MySQL AB, www.mysql.com