PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP Sonderzeichen umwandeln "ca." -> ≈ -> ≈


Jonny1983
2012-09-10, 14:50:12
Folgendes Problem:
In einer Textdatei steht folgendes drin:
≈

ich möchte das auslesen und folgendes zurückschreiben:


Wie stelle ich das an?

Stelle ich die Codierung des IE8 auf Unicode UTF-8, sehe ich das ca. Symbol ≈.
Stelle ich auf Westeuropäisch (Windows) um, dann wird mir ≈ angezeigt.

Wer das Ganze bei sich mal testen möchte, hier eine Vorlage:

<?php
function in_UTF8_wandeln($str) {
$str_utf8 = ??? ;
return ( $str_utf8);
}

$Quelldatei = "Symbol.txt";
$Zeichen = file($Quelldatei);
$Zieldatei = "Symbol_UTF8.txt";
$fh = fopen($Zieldatei, 'w+');
$UTF8_Zeichen = in_UTF8_wandeln(trim($Quelldatei[0]));
fwrite($fh, $UTF8_Zeichen);
?>

Gast
2012-09-10, 15:08:14
Der Witz ist, ≈ ist bereits UTF-8, der Browser weiß es nur noch nicht.

Also teilst du dem Browser mit, dass es sich um ein UTF-8-Dokument handelt.
Das geht entweder im HEAD-Bereich des HTML-Dokuments mit
<meta charset="UTF-8">
oder per HTTP-Header mit PHP
header('Content-Type: text/html; charset=UTF-8');

Sollte das keine Option sein, weil der Rest des Dokuments z.B. nicht UTF-8-konform ist, funktioniert auch ein simples
htmlentities('≈'); //Ausgabe: &asymp;

Jonny1983
2012-09-10, 15:09:11
Ok, hat scheinbar genügt folgendes am zu Beginn zu setzen:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

evtl. noch <?php header( 'content-type: text/html; charset=utf-8' ); ?>

Dann kann man sich die o.g. Beispielfunktion in_UTF8_wandeln sparen.

Es reicht also:
$Quelldatei = "Symbol.txt";
$Zeichen = file($Quelldatei);
$Zieldatei = "Symbol_UTF8.txt";
$fh = fopen($Zieldatei, 'w+');
fwrite($fh, $Zeichen[0]);

Edit: @Gast
Da warst du knapp 1min schneller, hatte die Lösung aber schon, dennoch DANKE :-)

Jonny1983
2012-09-18, 13:06:24
Ok die Ausgabe im Webrowser passt, aber nicht die Speicherung in einer Datei.

Ziel ist es immer noch, das Zeichen "≈" aus einer Datei auszulesen und in eine andere Datei als "≈" abzuspeichern.

Gast
2012-09-18, 14:06:47
Byte Order Mark (http://de.wikipedia.org/wiki/Byte_Order_Mark)