У меня есть база данных газетных статей в MySQL. Там есть таблица томов, таблица вопросов и таблица статей. У меня есть файл PHP, который генерирует список свойств, который затем извлекается и читается приложением iPhone. Плист содержит каждую статью в виде словаря внутри каждого выпуска, а каждый выпуск - в виде словаря внутри каждого тома. На самом деле plist содержит не всю статью, а только заголовок и URL.
Некоторые заголовки статей содержат специальные символы, такие как фигурные апострофы. Глядя на сгенерированный XML-список, всякий раз, когда он сталкивается со специальным символом, он непредсказуемо поглощает целую кучу текста, оставляя XML искаженным и нечитаемым.
(... в Chrome, во всяком случае, и я предполагаю, что на iPhone. Firefox на самом деле справляется с этим довольно хорошо, показывая белый? Черный алмаз вместо каких-либо специальных символов и ничего не сожрав.)
Пример правильно сформированного фрагмента списка:
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Rows</key>
<array>
<dict>
<key>Title</key>
<string>Vol. 133 (2003-2004)</string>
<key>Children</key>
<array>
<dict>
<key>Title</key>
<string>No. 18 (Apr 2, 2004)</string>
<key>Children</key>
<array>
<dict>
<key>Title</key>
<string>Basketball concludes historic season</string>
<key>URL</key>
<string>http://orient.bowdoin.edu/orient/article_iphone.php?date=2004-04-02&section=1&id=1</string>
</dict>
<!-- ... -->
</array>
</dict>
</array>
</dict>
</array>
</dict>
</plist>
Пример того, что происходит, когда он попадает в фигурный апостроф: Это из Chrome. На этот раз, по подсчетам MS Word, он съел 5 998 символов, пропустив до середины открытия заголовок истории о пицце; если я перезарядлю его, он будет вести себя по-другому, съедая какое-то другое количество. Правильное название: певец-автор песен Farrell ’05 добивается успеха за пределами пузыря
<dict>
<key>Title</key>
<string>Singer-songwriter Farrell ing>Students embrace free pizza, College objects to solicitation</string>
<key>URL</key>
<string>http://orient.bowdoin.edu/orient/article_iphone.php?date=2009-09-18&section=1&id=9</string>
</dict>
В MySQL этот заголовок хранится в виде (в двоичном виде):
53 69 6E 67 |65 72 2D 73 |6F 6E 67 77 |72 69 74 65
72 20 46 61 |72 72 65 6C |6C 20 C2 92 |30 35 20 66
69 6E 64 73 |20 73 75 63 |63 65 73 73 |20 62 65 79
6F 6E 64 20 |74 68 65 20 |62 75 62 62 |6C
Есть идеи, как правильно кодировать / декодировать вещи? Если нет, есть идеи, как я могу обойти проблему другим способом?
Понятия не имею, о чем я говорю, хаха; дайте мне знать, если я смогу помочь вам помочь. :) И большое спасибо!