php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 20-01-2009, 18:54
Jeremias
 Newbie
Links : Onlinestatus : Jeremias ist offline
Registriert seit: Jan 2009
Beiträge: 8
Jeremias ist zur Zeit noch ein unbeschriebenes Blatt
Standard Russische Dateinamen

Hallo,

ich hab das gelcihe problem wie immer wenn ich in utf8 bzw. russisch code,bisher hab ich fast alle probleme lösen können, nun will ich aber dateien öffnen mit php die kyrillische Namen haben, beim auslesen kommt natürlich nur ?????.htm raus, wie bring ich php nun dazu das es auch die dateinamen erkennt?

Geändert von Jeremias (20-01-2009 um 19:26 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 20-01-2009, 19:02
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.721
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
wie bring ich php nun dazu das es auch die dateinamen erkennt?
welches os? welche codierung beim os? sind die php-dateien denn auch in uft8 abgespeichert?

peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #3 (permalink)  
Alt 20-01-2009, 19:26
Jeremias
 Newbie
Links : Onlinestatus : Jeremias ist offline
Registriert seit: Jan 2009
Beiträge: 8
Jeremias ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hallo, script und dateien sind natürlich in utf8 abgespeichert, ich benutze ja auch schon lange utf 8 strings (z.B.auch mb funktionen etc.)

der testrechner is win xp, kann natürlich russische zeichen darstellen und ich schreib auch in russisch
Mit Zitat antworten
  #4 (permalink)  
Alt 20-01-2009, 19:30
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard Re: Russische Dateinamen

Zitat:
Original geschrieben von Jeremias
... wenn ich in utf8 bzw. russisch code,bisher hab ich fast alle probleme lösen können, nun will ich aber dateien öffnen mit php die kyrillische Namen haben, beim auslesen kommt natürlich nur ?????.htm raus, wie bring ich php nun dazu das es auch die dateinamen erkennt?
Warum sollte PHP-Probleme mit kyrillischen Zeichen in Dateinamen haben?
Es sieht für mich eher so aus, als ob sie bei der Ausgabe nicht richtig kodiert/dargestellt werden. Denn geöffnet hast du sie ja schon -- oder hab ich dich nicht richtig verstanden?
B.T.W. Quälcode und mehr Informationen zum Betriebssystem, auf dem das Script läuft, wären eventuell hilfreich.

--
Mist! Zu langsam. Also das mit dem Betriebssystem nehme ich hiermit zurück. ;-)
Mit Zitat antworten
  #5 (permalink)  
Alt 20-01-2009, 19:34
Jeremias
 Newbie
Links : Onlinestatus : Jeremias ist offline
Registriert seit: Jan 2009
Beiträge: 8
Jeremias ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hi,stimmt, einfacher testcode:

PHP-Code:
<?  
$verz
=opendir ('wiki');  
while (
$file readdir ($verz)) 
{  
    
    
    
  if(
$file{0}!="."
  { 
    
$endung strchr($file'.'); 
    
$link substr($file0, -4); 
    if(
$file != "." && $file != ".." && $file != ""
    { 

         echo 
$file." $link<br>";  

    } 
  } 
}  
closedir($verz);  
?>
gibt ganz viele ???????.htm aus, öffnen kann ich die dateien dann natürlich nicht!
Mit Zitat antworten
  #6 (permalink)  
Alt 20-01-2009, 19:43
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

Keinen / falschen Charset angegeben. Ein
PHP-Code:
header("Content-Type: text/html; charset=UTF-8"
sollte wunder wirken.
Mit Zitat antworten
  #7 (permalink)  
Alt 20-01-2009, 19:45
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Bei "Öffnen" habe ich an fopen() gedacht. Du auch?
Oder geht es dir nur um einen "anklickbaren" Link?

Und wenn du Probleme mit Pfaden hast, dann ist es sinnvoll, erstmal zu schauen, ob es sich nicht nur um eines handelt, dass durch fehlendes oder fehlerhaftes "Zusammenkleben" der Teilstücke des Pfades handelt:

PHP-Code:
// is mir zu lang ;-)
define ('DIR_SEP'DIRECTORY_SEPARATOR); 
// dein (relativer) Verzeichnispfad
$dir_path 'wiki';

// relativen Pfad in absoluten Pfad umwandeln
$dir_path realpath($dir_path); 
$dh opendir($dir_path);
while (
$entry readdir($dh)) {
  if (
'.' === $entry || '..' === $entry) {
    continue; 
// *nix-Quatsch ueberspringen
  
}
  
$absolut $dir_path DIR_SEP $entry;
 
  
// weiterverarbeiten (oder ausgeben)
  
echo 'rel: '$entry' ';
  echo 
'abs: '$absolut'<br />'
}
closedir($dh); 
... und mit substr() in UTF-8-Strings herumzufuhrwerken, halte ich für keine sehr gute Idee (das Überladen der PHP-Stringfunktionen mit der mb_string-Erweiterung auch eher nicht).

Geändert von fireweasel (20-01-2009 um 19:52 Uhr)
Mit Zitat antworten
  #8 (permalink)  
Alt 20-01-2009, 20:08
Jeremias
 Newbie
Links : Onlinestatus : Jeremias ist offline
Registriert seit: Jan 2009
Beiträge: 8
Jeremias ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hi, header kann/muss ich nicht setzen da ich die datei ja schon als utf8 abgespeichert habe (der also quasi schon gesetzt ist)

eigentlich will ich die dateien auch öffnen, ich hatte erstmal versucht den dateinamen direkt anzugeben (also фаил.htm, hoffe das forum zerreist das nu nicht) dann hat er mir aber einfach gesagt die datei existiert nicht.
Da ich sowas schon erwartet hatte hab ich dann erst mal versucht mir die dateien anzeigen zu lassen und dazu eben dieses script benutzt

das mit dem zusammenkleben etc versteh ich nu nicht ganz? Also er ist schon im richtigen ordner, und zeigt mir die dateien ja eigentlich auch an, aber für jedes kyrillische zeichen setzt er mir halt leider ein '?'

Warum sollte ich nicht mit mb_string arbeiten? Erst mal brauch ich es weil die welt nunmal nicht nur aus lateinischen zeichen besteht und ich eine russische Seite entwerfe die viel mit wörtern rumbastelt und zweitens funktioniert es prima (wenn man ein bisschen geduld hat zum erfahrungen sammeln )

also ihr könnt das script ja mal selbst ausprobieren und euren dateien russische namen geben (einfach irgendeinen text von mail.ru kopieren oder sonstewas)
Mit Zitat antworten
  #9 (permalink)  
Alt 20-01-2009, 20:08
jmc
 PHP Junior
Links : Onlinestatus : jmc ist offline
Registriert seit: Mar 2006
Beiträge: 868
jmc befindet sich auf einem aufstrebenden Ast
Standard

Ob UTF-8 oder nicht spielt ja wohl für substr keine Rolle, nur die Ausgabe wird möglicherweise nicht so sein wie man es sich vorgestellt hat.

Ich habe auch schon mit Dateien arbeiten müssen, welche kyrillische Zeichen in ihrem Dateinamen hatten und das bereitete für PHP keine Probleme.

Für die Korrekte Darstellung mit &#NR; findest du mit Google -> UTF-8 encoding ohne Probleme genügend Infos.
Mit Zitat antworten
  #10 (permalink)  
Alt 20-01-2009, 20:15
Jeremias
 Newbie
Links : Onlinestatus : Jeremias ist offline
Registriert seit: Jan 2009
Beiträge: 8
Jeremias ist zur Zeit noch ein unbeschriebenes Blatt
Standard

�NR; ?? was heisst das?


Ja aber wieso funktioniert dann das script nicht wenn php damit keine proleme hat? (was ja allgemein nun nicht wirklich stimmt, man muss schon einiges umstellen wenn man plötzlich abseits lateinischer buchstaben arbeitet,deshalb hat mich das mit dem dateiproblem jetz auch gar nicht verwundert)

Ich könnte mir vorstellen das vielleicht utf8_decode abhilfe schaffen könnte, aber ich weiß nicht wo ich es einsetzen soll.

Kannst du mir ein beispiel geben wie ich einfach z.B. die datei фаил.htm mit fopen öffnen könnte? einfach so reinschreiben rafft mein php auf jeden fall nicht...)

PS, ohne von dem eigentlich problem ablenken zu wollen. mb_substr ist schon nötig, und wenn das vorher nicht mit mb_internal_encoding("UTF-8"); entsprechend eingestellt ist verhält es sich auch relativ merkwürdig da der bytecode der zeichen quasi mittendrin durchgeschnitten wird und man plötzlich ganz andere buchstaben hat.

Geändert von Jeremias (20-01-2009 um 20:18 Uhr)
Mit Zitat antworten
  #11 (permalink)  
Alt 20-01-2009, 20:20
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Hi, header kann/muss ich nicht setzen da ich die datei ja schon als utf8 abgespeichert habe
Nicht wirklich. Der Zeichensatz deiner PHP-Datei hat mit dem der HTML-Ausgabe erstmal nichts zu tun. Wenn dein Apache dann auch noch dumm konfiguriert ist, ist zum Beispiel Latin1 der Standardzeichensatz. Den musst du dann über einen header übersteuern.
Mit Zitat antworten
  #12 (permalink)  
Alt 20-01-2009, 20:24
jmc
 PHP Junior
Links : Onlinestatus : jmc ist offline
Registriert seit: Mar 2006
Beiträge: 868
jmc befindet sich auf einem aufstrebenden Ast
Standard

Ja, man "sieht" dann wie gesagt andere Buchstaben, aber für substr macht es keinen Unterschied.

Und nein ich glaube nicht, dass ich diese Datei so öffnen könnte (mit diesem Dateinamen im Quelltext), aber ich kann einen Ordner auslesen und die dort ausgelesenen Dateien beliebig öffnen und auslesen.

utf8_decode nützt dir da sehr wahrscheinlich nichts, da PHP dieses Charset afaik nicht unterstützt (weiss ich aber nicht sicher), aber wie gesagt zum encodieren in utf 8 und zurück findest du sehr viel.
Hier einmal ein Beispiel, in welchem dir der Aufbau und eine mögliche Umwandlung gezeigt wird: http://www1.tip.nl/~t876506/utf8tbl.html
Mit Zitat antworten
  #13 (permalink)  
Alt 20-01-2009, 20:24
Jeremias
 Newbie
Links : Onlinestatus : Jeremias ist offline
Registriert seit: Jan 2009
Beiträge: 8
Jeremias ist zur Zeit noch ein unbeschriebenes Blatt
Standard

also ich hats kurz mal ausprobiert, war kein unterschied, abgesehen davon arbeite ich ja schon die ganze zeit mit russischen zeichen, das ist ansonsten kein problem, nur bei den dateien klappt es nicht.
Mit Zitat antworten
  #14 (permalink)  
Alt 20-01-2009, 20:36
Jeremias
 Newbie
Links : Onlinestatus : Jeremias ist offline
Registriert seit: Jan 2009
Beiträge: 8
Jeremias ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@jmc, das kommt mir grad vor wie mit Kanonen auf spatzen schiessen.

Die gesamte Seite arbeitet bisher mit UTF8, und ich hab alles von formularsenden, mb_* (das die funktion an sich funktioniert is ja schnuppe solange die ausgabe nicht stimm), mysql einstellen, pdf erzeuger oder sonstewas ist hab ich ich alles möglichkeiten für gefunden. Da muss es doch auch jetzt bei diesen dateien eine lösung geben?

Also warum sehe ich nur fragezeichen bei dem oben geposteten script, header ist auf utf8, andere scripts in der gleichen dateien funktionieren mit kyrillisch, also ich verstehs nicht?!

Geändert von Jeremias (20-01-2009 um 20:39 Uhr)
Mit Zitat antworten
  #15 (permalink)  
Alt 20-01-2009, 20:45
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Zitat:
Original geschrieben von Jeremias
eigentlich will ich die dateien auch öffnen, ich hatte erstmal versucht den dateinamen direkt anzugeben (also фаил.htm, hoffe das forum zerreist das nu nicht) dann hat er mir aber einfach gesagt die datei existiert nicht.
Da ich sowas schon erwartet hatte hab ich dann erst mal versucht mir die dateien anzeigen zu lassen und dazu eben dieses script benutzt
Ich hab das gerade mal ausprobiert -- und du hast den Fehler schon vollkommen richtig beschrieben. Die PHP-Verzeichnisfunktionen readdir() und auch scandir() geben statt "fremder" Zeichen tatsächlich nur ein Fragezeichen (ASCII-Code 0x3F) zurück. Ganz tolle Wurst. Qualitätssoftware eben. ;-)

Zitat:
das mit dem zusammenkleben etc versteh ich nu nicht ganz? ...
Hat sich auch erledigt. Ich hatte nur einen der üblichen Anfängerfehler vermutet. Tut mir leid, wenn ich dein Wissen unterschätzt habe.

Zitat:
Warum sollte ich nicht mit mb_string arbeiten? ...
Ich habe nichts gegen die mb-Extension an sich, nur das Überladen der Stringfunktionen kann Probleme bereiten, wenn man die PHP-Strings an anderen Stellen im Script noch als Container für Binärdateien "missbraucht". Ich mache letzteres gerne -- deswegen nehme ich von der Überladung lieber Abstand.

Zitat:
also ihr könnt das script ja mal selbst ausprobieren und euren dateien russische namen geben (einfach irgendeinen text von mail.ru kopieren oder sonstewas) [/B]
Hab ich -- hier die Ausgabe von scandir():
Code:
list(7) {
  [0] => string(13) '--output.html'
  [1] => string(1) '.'
  [2] => string(2) '..'
  [3] => string(10) '??????.htm'
  [4] => string(13) '?????????.htm'
  [5] => string(18) '??????_(?????).htm'
  [6] => string(19) '??????_(??????).htm'
}
... im Vergleich zum Original (Listing im Browser):
Code:
--output.html	HTML Document	1 KB	20.01.2009 20:26:36	
Екатерина.htm	HTML Document	32 KB	20.01.2009 20:23:24	
Катюша.htm	HTML Document	28 KB	20.01.2009 20:23:26	
Катюша_(оружие).htm	HTML Document	75 KB	20.01.2009 20:23:20	
Катюша_(песня).htm	HTML Document	35 KB	20.01.2009 20:23:16
Hab die Wikipedia missbraucht, um Beispieldateien zu bekommen. ;-)

Eine erste (schnelle) Google-Recherche macht nicht viel Hoffnung:
http://www.google.co.uk/search?hl=en...f-8+windows+xp
... wenn man das Datum der Bugreports sieht ...

Geändert von fireweasel (20-01-2009 um 20:53 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:17 Uhr.