php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 12.03.2008, 22:30  
Neuer Benutzer
 
Registriert seit: 12.03.2008
Beiträge: 3
anegin befindet sich auf einem aufstrebenden Ast
Standard Kodierung UTF-8 Russisch

Ich habe ein Problem , was bestimmt keinen wundert!!
Mein programm liest die Verzeichnisstruktur aus mit allen Unteverzeichnissen und Dateien. Es funktioniert alles wie ich es so gerne haben möchte...
Solange ich nur lateinische Schriften auslese, geplant war bei mir auch Dateien und Verzeichnisse auf Russisch auszulesen!!!
PHP-Code:
        $handle = @opendir($dir);
             while (
$file = @readdir ($handle)) 
             {
                 if(
$file == "." OR $file == ".."){ continue; }
                 if(
is_dir($dir.$file))
                {   
                         
usw... 
und es geht schon beim Öffnen des Verzeinisses los, wird nich als Verzeichnis erkannt! Wenn ich das Verzeicniss in norm. lateinischen Buchstaben umbennene, wird das Verzeichnis geöffnet und die erste Datei sieht dann so aus 01 ??????.mp3.... Ich habe noch keine Mittel findent können mit denen es sich decodieren lässt!!!
Ist es eigentlich möglich ?????? zu decodieren oder ist hier Zeichensatz schon endgültig verloren gegangen? Dann bedeutet es das ma mit php nicht Dateien auf anderen sprachen auslesen kann?
Bis jetzt habe ich ausprobiert:

PHP-Code:
$file iconv("Windows-1251","UTF-8",$file);
 echo 
html_entity_decode($file);
 
$file unicod($file);
echo 
htmlspecialchars($file); 
Was hat eigentlich Windows für Standartzeichensatz..
Ich habe schon sehr viel Zeit damit verbracht und werde sehr dankbar wenn mir jemand weiterhelfen könnte!
anegin ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 12.03.2008, 22:40  
Erfahrener Benutzer
 
Benutzerbild von Montellese
 
Registriert seit: 30.07.2007
Beiträge: 541
Montellese befindet sich auf einem aufstrebenden Ast
Montellese eine Nachricht über MSN schicken
Standard

Windows hat seinen eigenen Zeichensatz, kann aber auch teilweise auf ISO eigenstellt sein.
Was ist denn "unicod()" für eine Funktion? Hast du die selber geschrieben?
Probiers doch mal mit unicode_encode() und unicode_decode().
Kenne mich mit diesen Zeichensätzen etc leider auch noch nicht so toll aus, vor allem weil es ja dann noch je nach Betriebssystem variiert
Montellese ist offline   Mit Zitat antworten
Alt 13.03.2008, 15:34  
Neuer Benutzer
 
Registriert seit: 12.03.2008
Beiträge: 3
anegin befindet sich auf einem aufstrebenden Ast
Standard

Hi! Erste mal Danke für die Antwort!
Die Funktion habe ich nich selber geschrieben die ist aus
php.net.. ich habe jetzt von dir vorgeschlagene Funktionen ausprobiert
unicode_encode() und unicode_decode() die werden nicht erkannt..
Fehler:

Fatal error: Call to undefined function unicode_encode() in C:\xampp\htdocs\Mymp3archiv\050308\rus_test.php on line 8

Muss etwas #includeiren ? php.ini?
Ich benutze zur Testzwecken Xampp Php Version 5.2.5
Funktionieren die bei dir? Geht es vielleicht nur unter Linux obwohl apache ist apache... Ja das ist auch gute Frage wegen BS, es sollte eingetlich naher unter Linux laufen bei mir!
anegin ist offline   Mit Zitat antworten
Alt 13.03.2008, 18:31  
Erfahrener Benutzer
 
Benutzerbild von Montellese
 
Registriert seit: 30.07.2007
Beiträge: 541
Montellese befindet sich auf einem aufstrebenden Ast
Montellese eine Nachricht über MSN schicken
Standard

Also eine Funktion "unicod()" gibt es bei mir nicht, wenn ich die Suche von php.net benutze. Kannst du mir vielleicht mal einen Link geben.
Ich frage mich nur gerade, warum ich dir unicode-Funktionen angedreht habe, obwohl du ja UTF-8 willst ^^
Vielleicht klappts damit: PHP: utf8_encode - Manual bzw. PHP: utf8_decode - Manual

Also bei mir funktionieren alle diese 4 Funktionen problemlos und ich glaube nicht, dass ich was spezielles included habe. Benutze aber nicht XAMPP, habe alles von Hand installiert, damit ich weiss, wo der Fehler sitzt, wenns Probleme gibt
Montellese ist offline   Mit Zitat antworten
Alt 13.03.2008, 22:56  
Neuer Benutzer
 
Registriert seit: 12.03.2008
Beiträge: 3
anegin befindet sich auf einem aufstrebenden Ast
Standard

Servus!!! Die Funktion unicod() ist keine Standartfunktion von php es war ein von vielen vorgeschlagen Lösungen die ich ausprobiert habe! Ich habe die noch irgendwo in Datei,nichts besonderes, aber wenn du willst ich kann es posten den Link habe ich nicht mehr.
Es ist schon komisch das auch mein php-editor nicht unicode_decode,encode erkennt die anderen hat er gleich erkannt! Da stimmt etwas nicht!
Ja ich komme da einfach nicht weiter!!! Ich denke das Probelm liegt in dem was ich codiere nicht mit welche Funktion ... wenn die Zeichen schon falsch eingelsen werden man kann die codieren mit was man will es bleiben ?????? !
ich habe heite einfach den header auf verschiedene Zeichensätze umgestellt es blieb ohne Erfolg... Der Gedanke ist ich will zuerst prüfen was ich einlese

header ('Content-Type: text/plain; charset=ISO 10646'); usw

und dann kann man über codierunren sprechen...
Die Funktion readdir list es ein:
while ($file = @readdir ($handle))
ob die es wirklich macht bezweifle ich
das kriege ich raus aus einem Verzeichnis

02 ????? ????????.mp3
03 ??????.mp3
04 ????? ?????.mp3
05 ?????????.mp3
06 ????? ??????? ?????.mp3
07 ?????? ??????.mp3
09 ??????? ?? ??????.mp3
10 ?????????????????.mp3
11 ?? ????.mp3
12 ?? ???.mp3
anegin ist offline   Mit Zitat antworten
Alt 15.03.2008, 08:45  
PTC
Erfahrener Benutzer
 
Benutzerbild von PTC
 
Registriert seit: 27.10.2007
Beiträge: 1.708
PHP-Kenntnisse:
Anfänger
PTC ist einfach richtig nettPTC ist einfach richtig nettPTC ist einfach richtig nettPTC ist einfach richtig nett
Standard

Vielleicht muss du mal Russisch als Sprache bei Windows installieren??!
(kenne mich nicht aus)
PTC ist offline   Mit Zitat antworten
Alt 15.03.2008, 14:59  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Vermutlich werden schon die Windows API Funktionen um Auslesen der Namen die Segel streichen, da mit einiger Sicherheit nicht die Unicode-Versionen gebunden werden.
Was gibt folgendes Skript aus?
PHP-Code:
while ($file = @readdir ($handle)
{
  for(
$i=0$i<strlen($file); $i++
  {
    
printf('%s (%02x)  '$file[$i], ord($file[$i]));
  }
  echo 
"<br />\n";

David ist offline   Mit Zitat antworten
Alt 23.03.2008, 00:43  
Neuer Benutzer
 
Registriert seit: 22.03.2008
Beiträge: 5
Black Sliver befindet sich auf einem aufstrebenden Ast
Standard

@ David: da fehlt ne 2te schließende Klasmmer nach $handle

@ topic: Da das 02 und das .mp3 richtig angezeigt wird, scheint es so, als würde es sich hier um UTF-8 (Unicode 8bit) handeln (siehe Wikipedia). Bis jetzt dachte ich eigentlich, dass Windoof UTF-16 in APIs und NTFS verwendet ...
Du hast so ziemlich das größte Problem, das es bei PHP gibt: Charsets.
PHP arbeitet nämlich eigentlich mit ISO-8858-1, das kann leider aber keine russischen Zeichen darstellen. Da die Strings von PHP binary-safe sein sollten, müssten die Funktionen für readdir, etc. aber trotzem für Unicode funktionieren.

Damit russische Pfadangaben in der .php funktionieren, muss die Datei mit dem richtigen Encoding (scheinbar UTF- abgespeichert werden. Sonst werden die Pfade nicht erkannt (weils eben keine russischen Zeichen gibt). Damit der Browser keine ??? statt dem eigentlichen Text anzeigt, muss dem Browser per Header(...) klar gemacht werden, dass es sich um UTF-8 handelt. Daraus folgend müssen aber auch alle anderen String als UTF-8 kodiert sein, was eigentlich durch's abspeichern mit dem Encoding sichergestellt wird.

Eine andere Variante ist mit UTF8_encode und _decode ständig herumzukonvertieren. Das ist aber nicht so das Wahre.
Mein Windows-Support hat irgendwo seine Grenzen, seit dem ich Linux benutze - sry.

Geändert von Black Sliver (23.03.2008 um 00:47 Uhr).
Black Sliver ist offline   Mit Zitat antworten
Alt 24.03.2008, 13:25  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Zitat:
Zitat von Black Sliver Beitrag anzeigen
Da die Strings von PHP binary-safe sein sollten, müssten die Funktionen für readdir, etc. aber trotzem für Unicode funktionieren.
Dem ist gerade bei readdir et al nicht so, wenn php nicht die Unicode Versionen der Windows API benutzt.
Deshalb bitte einfach die Klammer anfügen, das Skript ausprobieren und die Ausgbae posten.
David ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

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 an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
phpbb in russisch installieren? eugen.m PHP Tipps 2006 4 12.10.2006 21:03
[Erledigt] Define mit UTF8-Zeichen (russisch) PHP-Fortgeschrittene 3 08.09.2005 23:16
deutsch bis russisch mit 4.0.21 Datenbanken 1 29.06.2005 04:39

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
codierung russisch, unicode russisch, russisch codierung, php russisch, utf-8 russisch, russisch unicode, russische kodierung, kodierung russisch, utf 8 russisch, russisch kodierung, encoding russisch, utf8 russisch, russisch encoding, call to undefined function unicode_encode(), russische codierung, russisch encodieren, russisch dekodieren, russisch utf-8, russisch php, html codierung russisch

Alle Zeitangaben in WEZ +1. Es ist jetzt 09:41 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum