Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]11121[/thread]

Pod::Man und UTF-8 Probleme

Leser: 1


<< >> 3 Einträge, 1 Seite
morph
 2008-01-09 21:57
#104558 #104558
User since
2007-12-06
79 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo beisammen.

Derzeit arbeite ich an meinem ersten Opensource Projekt, für das ich mit pod2man auch Linux manpages erstelle. Leider habe ich nun festgestellt, dass CPAN:Pod::Man sich dabei nicht um die Sonderzeichen (Umlaute) kümmert. So beobachte ich beispielsweise das Phänomen, dass die erzeugten Manpages verschieden behandelt werden. Dabei zeigt sich das ein direkter Aufruf der groff Datei problemlos funktioniert, nachdem ich das Tool aber installiert habe zerhackt es mir die deutschen Umlaute. Bei der Installation werden die Manpages natürlich in die dafür vorgesehenen Ordner /usr/share/man/man[15]/ kopiert.

Beispiel:
Code: (dl )
1
2
3
4
5
# Umlaute werden korrekt ausgegeben.
../docs $ man ./splitbox.1.gz

# Umlaute werden nicht korrekt ausgegeben.
~/ $ man splitbox


Nun bin ich auf der Mailingliste ubuntu-de auf einen Artikel gestoßen worden, der im Bezug auf englische "quotation marks" ein Problem in CPAN:Pod::Man behandelt, welches im mitgelieferten Modul von Perl 5.10 behoben sein soll. So habe ich also weitergesucht und bin auf ein, zwar schon sehr altes aber dennoch hilfreiches Posting gestoßen, welches mir zumindest schon mal eine IMHO rudimentäre Lösung offenbarte.

Meine Lösung:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/bin/bash
# $1 == language (en/de)
# $2 == gz

SCRIPT=splitbox
VERSION=0.0.3
DOCS=/home/uwe/work/MyOpenSource/Perl/$SCRIPT/docs/$VERSION/$1

pod2man --section=1 --release=$VERSION $DOCS/$SCRIPT.pod ./$SCRIPT.1
pod2man --section=5 --release=$VERSION $DOCS/$SCRIPT.conf.pod ./$SCRIPT.conf.5

for i in ./$SCRIPT.1 ./$SCRIPT.conf.5; do
sed -e '1,$ s/ä/\\[char228]/g' $i > $i.new; mv $i.new $i
sed -e '1,$ s/ö/\\[char246]/g' $i > $i.new; mv $i.new $i
sed -e '1,$ s/ü/\\[char252]/g' $i > $i.new; mv $i.new $i
sed -e '1,$ s/Ä/\\[char196]/g' $i > $i.new; mv $i.new $i
sed -e '1,$ s/Ö/\\[char214]/g' $i > $i.new; mv $i.new $i
sed -e '1,$ s/Ü/\\[char220]/g' $i > $i.new; mv $i.new $i
sed -e '1,$ s/ß/\\[char223]/g' $i > $i.new; mv $i.new $i
done

if [ "$2" == "gz" ]; then
gzip ./$SCRIPT.1
gzip ./$SCRIPT.conf.5
fi


Dieser Ansatz erscheint mir jedoch etwas unbeholfen, wobei ich mir nun auch überlege, ob die Manpages auf einem Linux-System, dass keine UTF-8 Locales eingerichtet hat, korrekt ausgegeben werden.

Und an dieser Stelle möchte ich doch einmal nachfragen, welche Erfahrungen Ihr diesbezüglich gesammelt habt. Ich gehe einfach mal davon aus, dass unter Euch jemand ist, der auf ähnliche Probleme gestoßen ist, wenn es um die Manpage-Erstellung geht.

Herzliche Grüße
Uwe
moritz
 2008-01-10 01:05
#104564 #104564
User since
2007-05-11
923 Artikel
HausmeisterIn
[Homepage]
user image
Und hast du das mal mit Pod::Man von 5.10.0 getested? Oder mit diesem Patch?
ptk
 2008-01-14 23:49
#104723 #104723
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Ich habe mit Entsetzen festgestellt, dass es mit nroff offensichtlich nicht möglich ist, beliebige Unicode-Zeichen > 255 darzustellen. pod2text kann das (theoretisch) besser, so dass es wahrscheinlich nur eine Frage von ein paar Tuits sein wird, dass perldoc generell auf pod2text umgestellt wird. (Das hilft in deinem Fall wahrscheinlich wenig, ich wollte es nur loswerden.)
<< >> 3 Einträge, 1 Seite



View all threads created 2008-01-09 21:57.