NGINX, FastCGI, UTF-8-Codierung: Ausgabe iso-8859-1 statt utf-8
ich hoffe, Sie können mir eine Idee, was falsch läuft.
Dem Szenario:
Ich Laufe gitweb (CGI) mit einem script im fastcgi-Modus:
#!/bin/sh
export FCGI_SOCKET_PATH=127.0.0.1:7001
su git -c "/var/www/vh_[vhost]/htdocs/gitweb.cgi --fastcgi &"
Dann nutze ich nginx zu dienen Inhalt:
...
fastcgi_pass 127.0.0.1:7001;
...
Alles funktioniert wie erwartet, aber hier ist das problem:
$ wget "http://git.[host].de/?p=[repo].git;a=summary" -O /tmp/test.txt && file --mime-encoding /tmp/test.txt
> /tmp/test.txt: iso-8859-1
$ su git -c "./gitweb.cgi \"?p=[repo].git;a=summary\" > ./test" && file --mime-encoding ./test
> ./test: utf-8
Was natürlich bedeutet, dass fast-cgi-Ausgabe ist utf8 bei content-serviert von nginx ist iso-8859-1.
FireBugs-Header Der Antwort:
Server nginx
Date Fri, 02 Sep 2011 14:14:08 GMT
Content-Type application/xhtml+xml; charset=utf-8
Transfer-Encoding chunked
Connection close
Sieht es aus wie die übertragung mit der Buchse führt, um ein encoding-problem.
Ich hab sehr viel getestet aber kann nicht herausfinden, wie man dieses Problem lösen.
- Ich sehe auch dieses problem mit nginx: Z�Reich statt Zürich ... in der Hoffnung auf eine Antwort!
- wie pro meine unten ... versuchen Sie, charset
Du musst angemeldet sein, um einen Kommentar abzugeben.
obwohl Sie sich nicht mit PHP, ich fand den fix für mein Problem, aber die Verpackung der Stücke, die wurden ausgesetzt als ISO-8859-1 mit:
utf8_encode()
: http://php.net/manual/en/function.utf8-encode.phpWenn Ihr CGI in PERL, vielleicht http://perldoc.perl.org/utf8.html wird Ihr problem lösen. Es löste meine ... Z�Reich
Eine weitere option könnte sein, fügen Sie den folgenden, um die
http { }
- Anweisung in der Apache.conf:-sd
Kann ich machen, es funktioniert durch die Verwendung
fcgiwrap
.Obwohl ich einige Umgebungsvariablen, wo der Unterschied zwischen den beiden Methoden, also habe ich folgenden code Hinzugefügt, um die
gitweb.cgi
dispatch()
sub:aber die Umwelt waren die gleichen.
Etwas getan werden kann, indem
fcgiwrap
ich noch nicht gefunden, was.Hier sind die Befehle, die ich verwenden, und die Unterschiede, die ich gefunden mit
tcpdump
auf die fcgi-socket:Vor,
gitweb --fastcgi
wurde direkt ausspawn-fcgi
: