Генерация / копирование текста UTF-8 из Flash - PullRequest
0 голосов
/ 01 апреля 2011

<ч /> Edit 04/04/11: Оказывается, что кодировка UTF просто скрывала большую проблему. Сначала я думал, что это UTF-кодировка как настройка, которая, кажется, решает проблему поиска, но это было больше связано с тем, как mongodb сериализует ключ поиска в фоновом режиме

<ч />

Я использую Flash, чтобы создать небольшой инструмент для генерации информации о БД для mongodb. Это сгенерирует что-то вроде:

db.save({"className":"mypackage.MyClass","name":"someName"});

И отобразить это в TextField, чтобы я мог просто скопировать и вставить его непосредственно в БД.

Моя проблема в том, что mongodb не может найти эту информацию позже. После большой отладки проблема сводилась к тому, что текст не вводился в формате UTF-8. то есть, чтобы это работало, мне нужно было скопировать строку текста из Flash, вставить ее во что-то вроде Notepad ++, установить кодировку UTF-8, а затем скопировать этот текст в базу данных.

Итак, мой вопрос заключается в следующем: есть ли способ указать, что я хочу сгенерировать текст как UTF-8 или скопировать как UTF-8 из TextField, чтобы избежать необходимости выполнять этот дополнительный шаг в моем рабочем процессе.

Спасибо

Ответы [ 2 ]

1 голос
/ 01 апреля 2011

Извлечение Как «вырезать и вставить» влияет на кодировку символов и что может пойти не так? .

В комментарии кто-то упоминает, что по крайней мере в Windows буфер обмена содержит разные версии скопированного текста.Кажется, проблема в приложении, которое получает вставленный текст (ваш БД).

Я только что попытался вставить из TextField в Notepad ++ (ранее изменил документ, в котором был документ utf-8), и текст получился в порядке.Итак, похоже, проблема в приложении, которое получает текст.Может быть, вы могли бы использовать некоторые экранирование (например, \u00F1 для ñ), но я не уверен, работает ли это или нет, так как я не использовал mongodb.

1 голос
/ 01 апреля 2011

Это всего лишь мысль.

Вы пытались использовать byteArray.

        var b1:ByteArray = new ByteArray();
        var b2:ByteArray = new ByteArray();

        var a:String = "className";
        var b:String = "mypackage.MyClass";
        // supported UTF-8 codes are
        // unicode-1-1-utf-8, 
        // unicode-2-0-utf-8, 
        // x-unicode-2-0-utf-8
        b1.writeMultiByte(a, "unicode-1-1-utf-8");

        /**
        Writes a UTF-8 string to the byte stream. Similar to the writeUTF() method,
        but writeUTFBytes() does not prefix the string with a 16-bit length word.
        */
        b2.writeUTFBytes(b); // encodes straight to UTF-8

        // flash says it honors the encoding mark when using toString
        trace(b1.toString(), b2.toString());

поддерживаемые наборы символов можно найти по адресу: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/charset-codes.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...