<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>geheimwerk.de &#187; WordPress (deutsch)</title>
	<atom:link href="http://www.geheimwerk.de/werk/de/topics/wordpress-deutsch/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.geheimwerk.de/werk/de/</link>
	<description></description>
	<lastBuildDate>Sat, 16 Apr 2011 13:09:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>Encoding-Wirrwarr</title>
		<link>http://www.geheimwerk.de/werk/de/2006/08/11/encoding-wirrwarr/</link>
		<comments>http://www.geheimwerk.de/werk/de/2006/08/11/encoding-wirrwarr/#comments</comments>
		<pubDate>Fri, 11 Aug 2006 14:31:13 +0000</pubDate>
		<dc:creator>Jan</dc:creator>
				<category><![CDATA[WordPress (deutsch)]]></category>

		<guid isPermaLink="false">http://www.geheimwerk.de/werk/2006/08/11/encoding-wirrwarr/</guid>
		<description><![CDATA[W&#228;hrend der letzten Tage habe ich an einem neuen Plugin gearbeitet, dass ich hoffentlich bald ver&#246;ffentlichen kann. Dabei ist mir zum wiederholten Male aufgefallen wie unglaublich schluderig die meisten Programmierer mit Textkodierungen umgehen. Zum Beispiel kann man WordPress problemlos mit beliebigen Schriftzeichen f&#252;ttern. Hierf&#252;r muss nur in Optionen>Lesen als &#8220;Zeichensatz f&#252;r Seiten und Feeds&#8221; UTF-8 [...]]]></description>
			<content:encoded><![CDATA[<p>W&#228;hrend der letzten Tage habe ich an einem neuen Plugin gearbeitet, dass ich hoffentlich bald ver&#246;ffentlichen kann. Dabei ist mir zum wiederholten Male aufgefallen wie unglaublich schluderig die meisten Programmierer mit Textkodierungen umgehen.</p>
<p><span id="more-29"></span>Zum Beispiel kann man WordPress problemlos mit beliebigen Schriftzeichen f&#252;ttern. Hierf&#252;r muss nur in Optionen>Lesen als &#8220;Zeichensatz f&#252;r Seiten und Feeds&#8221; UTF-8 eingetragen sein. So lange ich WordPress benutze war dies schon beim Einrichten eines neuen Systems so eingestellt.</p>
<p>Die WordPress-Datenbanktabellen werden in MySQL aber standardm&#228;&#223;ig als &#8220;latin1&#8243; angelegt. Das f&#252;hrt nicht nur dazu, dass PHPMyAdmin unter anderem deutsche Umlaute falsch darstellt. Auch funktionieren Datenbankabfragen, die Unicodezeichen enthalten, nicht wie erwartet.</p>
<p>Nicht nur das. Der Inhalt der Tabellenzellen ist auch noch mehrfach kodiert: die einzelnen Bytes der ein- bis vierbytigen UTF-8 Zeichen sind in ihrer ISO-8859-1-Darstellung nochmals UTF-8 kodiert! Das ist mindestens so kompliziert wie es sich anh&#246;rt. In diesem Fall ist eine L&#246;sung den Datenbankabzug (SQL-Dump) von UTF-8 nach ISO-8859-1(!) zu konvertieren. Man erh&#228;lt dann eine Datei die endlich echtes UTF-8 ist.</p>
<p>Ich habe leider schon mehrfach mit solchen Problemen gek&#228;mpft. Auch mit Dateinamen, die asiatische Zeichen enthalten. Wie auch in jenem Fall hilft das UNIX-Tool &#8220;iconv&#8221;:</p>
<p><code>iconv -f utf-8 -t iso-8859-1 dump.sql > dump-utf8.sql</code></p>
<p>Nach einer kurzen Websuche bin ich auf einen <a href="http://m.tacker.org/blog/64.script-to-convert-wordpress-content-encoding.html">Script zur Konvertierung</a> gesto&#223;en. Der dortige Script ist aber mit &#228;u&#223;erster Vorsicht zu genie&#223;en und man sollte wirklich unbedingt ein Backup der ganzen MySQL-Datenbank durchf&#252;hren. Das Script beschr&#228;nkt sich n&#228;mlich nicht auf die Tabellen des aktuellen WordPress-Blogs. Es konvertiert vielmehr <strong>alle Tabellen</strong> der aktuellen Datenbank.</p>
<p>Da ich, wie oben erw&#228;hnt, schon immer UTF-8 als Kodierung f&#252;r meine Inhalte verwendet habe, verhackst&#252;ckelte der erste Durchlauf au&#223;erdem alle vorher einwandfreien Umlaute. Ich musste also ein Backup einspielen und den Script modifizieren. Dazu habe ich kurzerhand den Bereich von &#8220;//Convert its data&#8221; bis &#8220;flush(); }&#8221; auskommentiert. Der Autor hatte wohl sein zu konvertierendes WordPress urspr&#252;nglich auf &#8220;ISO-8859-1&#8243; stehen.</p>
<p>Der Skript leistete in meinem Fall nicht nur zu viel Arbeit, sondern vergisst nicht nur die Tabellen, sondern auch die Datenbank selbst auf &#8220;utf8_general_ci&#8221; umzustellen.</p>
<p>Nach der Umstellung muss ich immer noch Datenbankbackups, die ich mit dem Modul &#8220;Datensicherung&#8221; gemacht habe, mit der Option &#8220;latin1&#8243; importieren. Auf den ersten Blick ist das verwunderlich. Also hat hier wohl wieder ein Programmierer geschludert.</p>
<p><strong>Update</strong>:  Mittlerweile ist <a href="http://www.geheimwerk.de/werk/2006/08/13/encoding-trouble/">dieses Problem gel&#246;st</a>, nur um vom n&#228;chsten ersetzt zu werden (<a href="http://www.geheimwerk.de/werk/2006/08/13/encoding-trouble/">Englischer Beitrag zu diesem Thema</a>).</p>
<p><strong>Anhang</strong><br />
Die Basis f&#252;r eine solche Dateinamenkonvertierung sieht in Applescript in Ermangelung einer AppleScript-eigenen Funktion in etwa so aus:<br />
<code>set newFileName to do shell script "echo 'ÉsÉìÉNÉLÉâÅ[.txt' | iconv -f UTF8 -t MACROMAN | iconv -f SHIFT_JIS -t UTF8"</code><br />
Leider gab es hier noch ein Sch&#246;nheitsfehler. Ich hatte mit der damals aktuellen Version von Mac OS X das Probleme per AppleScript der urspr&#252;nglichen Datei auch diesen neuen Namen zu geben. Wieder ein Beispiel f&#252;r schnodderigen Umgang mit Textkodierungen. Mittlerweile geht zumindest das einwandfrei:<br />
<a id="p30" rel="attachment" title="Encoding Conversion Droplet" href="http://www.geheimwerk.de/werk/2006/08/11/encoding-wirrwarr/encoding-conversion-droplet/">Encoding Conversion Droplet ansehen</a>, <a id="p32" href="http://www.geheimwerk.de/werk/wp-content/uploads/2006/08/convertfileencodingscpt.zip">downloaden</a><br />
F&#252;r die Konvertierung in HTML habe ich &#252;brigens <a href="http://www.fromconcentratesoftware.com/Applescripts/index.php">Convert Applescript to HTML</a> verwendet, dass ich mittlerweile massiv erweitert und XHTML f&#228;hig gemacht habe.</p>
<p><strong>Links zum Thema</strong></p>
<ul>
<li><a href="http://blog.magenson.de/archives/2005/04/24/wordpress-goes-multikulti/">sententia fredericiana » WordPress goes Multikulti</a></li>
<li><a href="http://erard.wordpress.com/2005/10/13/wordpress-mysql-database-conversion-to-utf-8/">Sébastien Erard » WordPress MySQL database : conversion to UTF-8</a></li>
<li><a href="http://climbtothestars.org/archives/2004/07/18/converting-mysql-database-contents-to-utf-8/">Climb to the Stars (Stephanie Booth) » Converting MySQL Database Contents to UTF-8</a></li>
<li><a href="http://www.joelonsoftware.com/articles/Unicode.html">The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!) &#8211; Joel on Software</a></li>
<li><a href="http://www.cs.tut.fi/~jkorpela/chars.html">A tutorial on character code issues</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.geheimwerk.de/werk/de/2006/08/11/encoding-wirrwarr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

