По умолчанию Flash обрабатывает строки, как если бы они были закодированы с использованием UTF-8. Причиной того, что вы видите символы, которые могут заменять непечатаемые символы или недопустимые / отсутствующие глифы, может быть то, что вы установили System.useCodepage
в true
- если это то, что произошло, то почему вы это сделали?
В противном случае в шрифте, который используется для отображения символов, могут отсутствовать глифы нужных вам символов. Вы можете проверить это, используя Font.hasGlyphs("string with the glyphs");
, чтобы убедиться, что текст может отображаться. Обычно это относится только к встроенным шрифтам.
Еще одна возможность заключается в том, что исходный текст, который вы пытаетесь отобразить, не является строкой в кодировке UTF-8. Некоторые особенно популярные форматы файлов, такие как XML и HTML, иногда используют объявление формата, не соответствующее фактической полезной нагрузке (например, тег XML: <?xml encoding="utf-8" ?>
может быть присоединен к любому XML независимо от фактической кодировки документа). Чтобы убедиться, что текст в UTF-8 - прочитайте его как ByteArray и убедитесь, что первый бит каждого байта установлен в 0. Однобайтовые кодировки, которые используют национальные символы, используют первый бит для кодирования своих символов, в то время как UTF-8 никогда этого не делает.