Zum Inhalt springen

Zeichensatz/encoding ermitteln ?


Aiun

Empfohlene Beiträge

hi,

gibt es eine Möglichkeit, Zeichensatz und/oder Zeichencodierung eines Strings zu ermitteln ?

ich habe eine Datei, die ich je nachdem was ich mache lesen kann, und dann doch wieder nur zeichenwust herausbekomme...daher vermute ich es liegt an der Zeichencodierung....doch niemand kann sagen welche das ist.

danke

Link zu diesem Kommentar
Auf anderen Seiten teilen

Kannst Du vielleicht noch eine Programmiersprache zum Thread geben.

Allgemein kenne ich keine Möglichkeit um aus einer Variable den Zeichensatz zu ermitteln, jedoch lässt sich meist am Filesystem oder Betriebssystem abschätzen um welchen Zeichensatz es sich handeln könnte.

Bei Windows wird dein Zeichensatz wohl ISO-8859-1, CP1250 oder CP1251 sein.

Bei Linux gib auf der Konsole einfach folgendes ein: locale charmap

Nun siehst Du welchen Zeichensatz Deine Konsole verwendet. Wird z.B. ein Perl Script auf der Konsole ausgeführt, schreibt es auch mit diesem Zeichensatz Dateien auf die Platte.

!!! Achtung !!!

Wenn Du eine Konsole under X11 oder eine IDE wie Eclipse einsetzt verwendet das Script den Zeichensatz, den die Konsole / IDE vorgiebt. Erstellst Du z.B. ein File mit der IDE und willst es mit der Konsole weiter bearbeiten gibt das öfters ekelhafte Fehler.

Greez,

PhOeniX

Link zu diesem Kommentar
Auf anderen Seiten teilen

Werden nur Umlaute und Sonderzeichen als "Zeichenwust" dargestellt, oder der gesamte String?

Falls nur Erstere, tippe ich auf das alte DOS-Format (OEM, CP850), das so konvertiert werden kann:


$str = "das ist ein t„st";
echo $str."<hr>";
echo iconv("CP850","ISO_8859-15",$str);
[/PHP]

Alternativ kannst Du auch mit dem Kommandozeilen-Tool "iconv" Tests machen.

Eine Liste der untestützten Character-Sets bekommst Du mit "iconv -l".

Vorraussetzung für PHP ist:

Es muss iconv() in der Standard-C Bibliothek vorhanden sein oder libiconv auf Ihrem System installiert sein. Die libiconv-Bibliothek ist verfügbar über http://www.gnu.org/software/libiconv/.

Edit:

Du könntest ja mal einen Beispiel-String posten...

Link zu diesem Kommentar
Auf anderen Seiten teilen

kann ich vielleicht Zeichensätze als array irgendwo abfragen und sie dann einfach alle mal durchgehen ? ^^

Klar, kannst Dir ja mit "iconv -l" ne Liste der unterstützen Zeichensätze ausgeben lassen, und daraus ein Array machen...

Dann kannste ja für jeden Wert ($strVal) ein:


$strRes = iconv($strVal,"ISO_8859-15",$strSrc); 

machen, und Dir mal zu jedem Charecter-Set eine Zeile konvertieren und anzeigen lassen...

Vielleicht ist ja was lesbares dabei ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Windows Editor und Excel z.B. können sie öffnen.

Eine betrachtung des hex-Codes hat gezeigt, das es wohl ein 2byte Zeichensatz ist.

könnte es sein das der PHP-Befehl iconv nichts mit den Strings anfangen kann, die iconf -l ausgibt ? ich bekomme bei keinem der dortigen zeichensätze irgend eine Rückgabe

*script nochmal checkt*

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also bei mir funktioniert das hier:


<?php
$strTest = '„¢@䢣@…‰•@…‰•†Âƒˆ…™@£…¢£KKK';

$strBinIconv = '/usr/bin/iconv';
$resPipe = popen($strBinIconv.' -l','r');
if ($resPipe) {
$strRes = '';
while ($resPipe && !feof($resPipe)) {
$strRes .= fgets($resPipe);
}
pclose($resPipe);
}
$arrCharsets = explode("\n",$strRes);
if (is_Array($arrCharsets)) {
foreach ($arrCharsets as $strKey=>$strVal) {
$strCurrCSet = str_replace('//','',trim($strVal));
//Try to find a readable string...
$strTmpRes = @iconv($strCurrCSet,"ISO_8859-15",$strTest);
if (preg_match('/[a-z0-9äöü]{5,}/is',$strTmpRes)) {
//We possibly have some readable (min 5) characters here...
echo 'Maybe readable using conversion from \''.$strCurrCSet.'\' to \'ISO_8859-15\':<br>';
echo $strTmpRes;
echo '<hr>';
}
}
}
?>
[/PHP]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...