convert_cyr_string — Преобразует строку из одной кириллической кодировки в другую


Как конвертировать строку русских кириллических букв?

Я разбираю mp3-теги.

String artist — Я не знаю, что было в кодировке

Ïåñíÿ ïðî íàäåæäó — пример строки на русском языке «Песня про надежду»

new String(text.getBytes(encoding), «cp1251»); , но это не работает.

если я использую utf-16

new String(text.getBytes(«UTF-16»), «cp1251») return «юя П е с н я п р о н а д е ж д у» пространство — не char пространство

EDIT:

этот первый прочитанный байт

String s = new String (abyFrameData, «. » );

Строки Java — это UTF-16. Все остальные кодировки могут быть представлены с использованием байтовых последовательностей. Чтобы декодировать символьные данные, вы должны предоставить кодировку, когда вы сначала создаете строку. Если у вас есть поврежденная строка, это уже слишком поздно.

Предполагая ID3, спецификации определяют правила кодирования. Например, ID3v2.4.0 может ограничивать кодировки, используемые расширенным заголовком:

q — Ограничения текстового кодирования

Обработка кодировки определяется далее в документе:

Если ничего не сказано, строки, включая числовые строки и URL-адреса, представлены как ISO-8859-1 символов в диапазоне от $20 до $FF. Такие строки представлены в кадре описания как

, или Если строки новой строки позволил. Если ничего не сказано символ новой строки запрещен. В ISO-8859-1 представлена ​​новая строка, если разрешено, только с $0A.

Фреймы, которые допускают различные типы текстовое кодирование содержит текстовую кодировку байт описания. Возможные кодировки:

Используйте классы транскодирования, такие как InputStreamReader или (более вероятно, в этом случае) конструктор String(byte[],Charset) для декодирования данных. См. Также Java: приблизительное руководство по кодировке символов.

Анализ строковых компонентов структуры данных ID3v2.4.0 будет примерно таким:

Справочник по PHP : Функции работы с данными : Строковые функции : Перобразование кодировок

Материал из WebWikiABCD

Содержание

convert_cyr_string


Преобразует строку из одной кодировки кириллицы в другую.

Функция переводит строку str из кодировки from в кодировку to. Конечно, это имеет смысл только для строк, содержащих «русские» буквы, т.к. латиница во всех кодировках выглядит одинаково. Разумеется, кодировка from должна совпадать с истинной кодировкой строки, иначе результат получится неверным. Значения from и to — одиночный символ, определяющий кодировку:

  • k — koi8-r
  • w — windows-1251
  • i — iso8859-5
  • a — x-cp866
  • d — x-cp866
  • m — x-mac-cyrillic

Функция работает достаточно быстро, так что ее вполне можно применять для перекодировки писем в нужную форму перед их отправкой по электронной почте.

bin2hex

Производит преобразование символьных данных в шестнадцатеричный вид.

Функция bin2hex() возвращает строковое шестнадцатеричное представление символьно-байтовых данных, содержащихся в строке str.

Конвертация производиться побайтово, старший полубайт указывается первым.

iconv

Преобразует строку из одной кодировки в другую.

Функция переводит строку str из кодировки from в кодировку to. Возвращает строку в новой кодировке, или FALSE в случае ошибки. Если добавить //TRANSLIT к параметру to будет включена транслитеризация. Это означает, что вслучае, когда символа нет в конечной кодировке, он заменяется одним или несколькими аналогами. Если добавить //IGNORE, то символы, которых нет в конечной кодировке, будут опущены. Иначе, будет возвращена строка str, обрезанная до первого недопустимого символа. Значения from и to — кодовое сочетание определяющее кодировку.

Пример перевода строки содержащей кириллицу из кодировки UTF-8 в Windows-1251:

mb_convert_encoding

$from_encoding — может быть массивом, тогда символы определяются из указанного набора кодировок

Правильное преобразование кодировки в QString

Есть библиотека, которая в качестве аргументов метода принимает QString.
Но строка должна быть в IBM 866.

QTextCodec::fromUnicode(string) отдаёт QByteArray. Если его перегнать в QString, то в место символов стоят знаки вопроса.

Как правильно преобразовать QByteArray в QString?

Но строка должна быть в IBM 866.

WAT? QString внутри себя всегда в UCS-2 строку хранит. А QString(const QByteArray&), ЕМНИП, перегоняет строку через fromLatin1(), т.е. считает что QByteArray в Latin1

QString внутри себя всегда в UCS-2 строку хранит

Выдержка из доков:


The QString class provides a Unicode character string.
QString stores a string of 16-bit QChars, where each QChar corresponds one Unicode 4.0 character. (Unicode characters with code values above 65535 are stored using surrogate pairs, i.e., two consecutive QChars.)

И как ты собрался хранить в QString IBM 866?

Илон Маск рекомендует:  Добавление рисунка

А что делать, если либа принимает QString и мне надо передать его в 866?

Найти рабочий пример применения этой либы.

В QByteArray у тебя IBM 866?

Вот этот момент не понятен. Какая строка? Которая у тебя, или которая должна быть уже внутри переданной в библиотеке? Почему должна быть? Больше подробностей.

А если установить QTextCodec?

Хранить не Unicode в QString невозможно.

А что делать, если либа принимает QString и мне надо передать его в 866?

Если кодишь для себя, то в половой орган такую библиотеку!

Если по работе, то начинай искать новую работу, т к если дураки засовывают в QString левую кодировку, то одной глупостью они не ограничатся.

По сути: у QString есть метод data, который возвращает не константный указатель на внутренние данные. Попробуй с помощью этого указателя и явного преобразования QChar* к сhar* записать поверху свои данные.

Вот рабочий пример преобразования QString из одной кодировки в другую (исходник в UTF-8):

result — QString в IBM 866.

Это было продолжение вот этой темы. Если интересно, то там есть подробности зачем и почему. Решение проблемы см. выше.

Чего и следовало ожидать. Правильно тебе AF советовал выкинуть эту библиотеку, раз для неё такой изврат нужен

Походу фигня написана!

QString(«test абвгдеёжз») у себя внутри будет вызывать QString::fromAscii, и если строка на самом деле в UTF-8, то она будет безнадежно испорчена!

Второй момент — QTextStream юзает у себя внутри QTextCodec, для того, чтобы генерировать из бинарных данных корректные экземпляры QString. Т е из условно правильной строки в «IBM 866» внутри QTextStream, будет получена какая то перекодированная хрень!

Но эта фигня в моём случае работает.

Понятия не имею, что у тебя за система, но у меня в result после пробела 16 байт с одинаковым значением 63.

Если шо, такой код более правильный:

Но я не уверен, что в последнем преобразовании всегда все будет корректно.


Мы точно о Qt5 говорим?

Нет, так неправильно. QString пытается преобразовать QByteArray из одной кодировки в другую. И все символы заменяет знаками вопроса.

На этом примере что Qt5, что Qt4 работаю одинаково! Да и откуда разнице браться?

QString пытается преобразовать QByteArray из одной кодировки в другую

Да, тут ты прав, я спутал двухбайтовые символы и однобайтовые.
Однако у меня там отнюдь не знаки вопроса ;)

Encoding. Convert Метод

Определение

Преобразует массив байтов из одной кодировки в другую. Converts a byte array from one encoding to another.

Перегрузки

Преобразует диапазон байтов в массиве байтов из одной кодировки в другую. Converts a range of bytes in a byte array from one encoding to another.

Преобразует весь массив байтов из одной кодировки в другую. Converts an entire byte array from one encoding to another.

Convert(Encoding, Encoding, Byte[], Int32, Int32)

Преобразует диапазон байтов в массиве байтов из одной кодировки в другую. Converts a range of bytes in a byte array from one encoding to another.

Параметры

Кодировка исходного массива, bytes . The encoding of the source array, bytes .

Кодировка выходного массива. The encoding of the output array.

Преобразуемый массив байтов. The array of bytes to convert.

Индекс первого элемента преобразуемого массива байтов bytes . The index of the first element of bytes to convert.

Число байтов, которые требуется преобразовать. The number of bytes to convert.

Возвраты

Массив типа Byte, содержащий результат преобразования диапазона байтов из массива bytes из srcEncoding в dstEncoding . An array of type Byte containing the result of converting a range of bytes in bytes from srcEncoding to dstEncoding .

Исключения

srcEncoding — null . srcEncoding is null .


-или- -or- dstEncoding — null . dstEncoding is null .

-или- -or- bytes — null . bytes is null .

index и count не определяют допустимый диапазон в массиве байтов. index and count do not specify a valid range in the byte array.

Произошел откат (полное объяснение см. в статье Кодировка символов в .NET) A fallback occurred (see Character Encoding in .NET for complete explanation) — и — -and- srcEncoding. srcEncoding. Параметру DecoderFallback задается значение DecoderExceptionFallback. DecoderFallback is set to DecoderExceptionFallback.

Илон Маск рекомендует:  StrScan - Функция Delphi

Произошел откат (полное объяснение см. в статье Кодировка символов в .NET) A fallback occurred (see Character Encoding in .NET for complete explanation) — и — -and- dstEncoding. dstEncoding. Параметру EncoderFallback задается значение EncoderExceptionFallback. EncoderFallback is set to EncoderExceptionFallback.

Convert(Encoding, Encoding, Byte[])

Преобразует весь массив байтов из одной кодировки в другую. Converts an entire byte array from one encoding to another.

Параметры

Формат кодировки параметра bytes . The encoding format of bytes .

Целевой формат кодировки. The target encoding format.

Преобразуемые байты. The bytes to convert.

Возвраты

Массив типа Byte, содержащий результаты преобразования bytes из srcEncoding в dstEncoding . An array of type Byte containing the results of converting bytes from srcEncoding to dstEncoding .

Исключения

Свойство srcEncoding имеет значение null . srcEncoding is null .

— или — -or- Свойство dstEncoding имеет значение null . dstEncoding is null .

-или- -or- bytes — null . bytes is null .

Произошел откат (полное объяснение см. в статье Кодировка символов в .NET) A fallback occurred (see Character Encoding in .NET for complete explanation) — и — -and- srcEncoding. srcEncoding. Параметру DecoderFallback задается значение DecoderExceptionFallback. DecoderFallback is set to DecoderExceptionFallback.

Произошел откат (полное объяснение см. в статье Кодировка символов в .NET) A fallback occurred (see Character Encoding in .NET for complete explanation) — и — -and- dstEncoding. dstEncoding. Параметру EncoderFallback задается значение EncoderExceptionFallback. EncoderFallback is set to EncoderExceptionFallback.

Примеры

В следующем примере строка в кодировке Юникод преобразуется в строку в кодировке ASCII. The following example converts a Unicode-encoded string to an ASCII-encoded string. Поскольку объект кодировки ASCII, возвращаемый ASCII свойством, использует замену замены, а символ PI не является частью набора символов ASCII, символ PI заменяется вопросительным знаком, как показано в выходных данных примера. Because the ASCII encoding object returned by the ASCII property uses replacement fallback and the Pi character is not part of the ASCII character set, the Pi character is replaced with a question mark, as the output from the example shows.

String urlencode(string str)


Дата добавления: 2013-12-23 ; просмотров: 660 ; Нарушение авторских прав

Array parse_url(string url)

Работа с URL

String convert_cyr_string(string str, string from, string to)

Преобразование кодировок

Для преобразования строк из одной кодировки в другую предназначена функция convert_cyr_string ():

Функция convert_cyr_string преобразует строку str из кодировки from в кодировку to. Значения аргументов from и to— одиночные символы, определяющие кодировку:

k —KOI8-R;

w —Windows-1251;

i — IS08859-5;

Для преобразования кодировок многобайтовых строк предназначена функция mb_convert_encoding().

string mb_convert_encoding(string str, string to-encoding [, mixed from-encoding])

Функция возвращает строку str, преобразованную из кодировки from- encoding в кодировку to-encoding.

Функция parse_url() позволяет разбить адрес на отдельные компоненты:

Функция parse_url() обрабатывает URL , переданный строкой url, и возвращает его компоненты. Массив, возвращаемый функцией, включает множество различных существующих компонентов URL: «scheme», «host», «port», «user», «pass», «path», «query» и «fragment».

Для разбора строки с параметрами («query») имеется специальная функция parse_str():

void parse_str(string str [, array arr])

Функция parse_str() интерпретирует строку str так, как если бы эта строка содержала в себе переменные и их значения и передавалась бы в URL. Если задан второй необязательный параметр аrr, то значения, найденные при помощи этой функции, сохраняются не в глобальных переменных, а в элементах указанного массива.

Согласно спецификации RFC 1738 в URL не допускается использование пробелов, а также символов национальных алфавитов, поэтому для передачи русских слов через строку запроса URL или значение параметра следует преобразовать в безопасный режим при помощи функции urlencode():

Функция urlencode о возвращает строку , в которой все не алфавитно-цифровые символы, за исключением дефиса, знака подчеркивания и точки заменены знаком процента (%), за которым следуют две шестнадцатеричные цифры, обозначающие код символа.

Convert_cyr_string — Преобразует строку из одной кириллической кодировки в другую

convert_cyr_string
Преобразует строку из одной кодировки кириллицы в другую.

Синтаксис :
string convert_cyr_string(string str, string from, string to);


Функция переводит строку str из кодировки from в кодировку to . Конечно, это имеет смысл только для строк, содержащих «русские» буквы, т.к. латиница во всех кодировках выглядит одинаково. Разумеется, кодировка from должна совпадать с истинной кодировкой строки, иначе результат получится неверным. Значения from и to — одиночный символ, определяющий кодировку:

  • k — koi8-r
  • w — windows-1251
  • i — iso8859-5
  • a — x-cp866
  • d — x-cp866
  • m — x-mac-cyrillic Функция работает достаточно быстро, так что ее вполне можно применять для перекодировки писем в нужную форму перед их отправкой по электронной почте.

    Илон Маск рекомендует:  Что такое код imagesise

    bin2hex
    Производит преобразование символьных данных в шестнадцатеричный вид.

    Синтаксис :
    string bin2hex(string str)

    Функция bin2hex() возвращает стороковое шестнадцатеричное представление символьно-байтовых данных, содержащихся в строке str . Конвертация производиться побайтово, старший полубайт указывается первым.

    Материалы, которые находятся на этой страничке, любезно предоставлены Игорем Ивановым

    Кодировка сообщений из контактной формы

    Группа: Members
    Сообщений: 107
    Пользователь №: 3598
    Регистрация:
    12-November 10

    С моей контаконой формы сообщения на ящик mail.ru приходят вот такие:

    От: контактная форма

    кодировка документа (с моей формой) — UTF-8
    код с конвертом кирилицы выглядит так:

    $message=convert_cyr_string («$message», «w», «k»);
    $tema=convert_cyr_string («$tema», «w», «k»);
    $ot=convert_cyr_string («$ot», «w», «k»);

    опять напутала что-то с кодировкой?

    Группа: Super moderator
    Сообщений: 940
    Пользователь №: 508
    Регистрация:
    30-March 07

    CODE
    , «;
    $to .= «Kelly «;

    $subject = «Birthday Reminders for August»;

    $message = ‘

    Birthday Reminders for August

    Convert_cyr_string — Преобразует строку из одной кириллической кодировки в другую


    convert_cyr_string
    Преобразует строку из одной кодировки кириллицы в другую.

    Синтаксис :
    string convert_cyr_string(string str, string from, string to);

    Функция переводит строку str из кодировки from в кодировку to . Конечно, это имеет смысл только для строк, содержащих «русские» буквы, т.к. латиница во всех кодировках выглядит одинаково. Разумеется, кодировка from должна совпадать с истинной кодировкой строки, иначе результат получится неверным. Значения from и to — одиночный символ, определяющий кодировку:

  • k — koi8-r
  • w — windows-1251
  • i — iso8859-5
  • a — x-cp866
  • d — x-cp866
  • m — x-mac-cyrillic Функция работает достаточно быстро, так что ее вполне можно применять для перекодировки писем в нужную форму перед их отправкой по электронной почте.

    bin2hex
    Производит преобразование символьных данных в шестнадцатеричный вид.

    Синтаксис :
    string bin2hex(string str)

    Функция bin2hex() возвращает стороковое шестнадцатеричное представление символьно-байтовых данных, содержащихся в строке str . Конвертация производиться побайтово, старший полубайт указывается первым.

    Материалы, которые находятся на этой страничке, любезно предоставлены Игорем Ивановым

    УЧЕБНИК PHP

    Функции преобразования кодировки

    Функция преобразует строку из одной кодировки кириллицы в другую. Она переводит строку str из кодировки from в кодировку to. Значения from и to это одиночные символы, определяющий кодировку:

    • k — koi8-r;
    • w — windows-1251;
    • i — iso8859-5;
    • a — x-cp866;
    • d — x-cp866;
    • m — x-mac-cyrillic;

    Давайте для примера перекодируем слово «определяющий» из кодировки windows-1251 в koi8-r и обратно:

    result of translate ‘определяющий’ to koi8-r is ‘ПРТЕДЕМСАЭЙК’
    result of translate ‘ПРТЕДЕМСАЭЙК’ to win is ‘определяющий’

    bin2hex()

    Производит побайтовое преобразование символьных данных в шестнадцатеричный вид.

    Функция bin2hex() принимает в качестве единственного параметра строку и возвращает строковое шестнадцатеричное представление символов, содержащихся в этой строке.


    Для примера давайте перекодируем тоже самое слово «определяющий»:

    И вот какая абракадабра из этого получилась:

    String urlencode(string str)

    Дата добавления: 2013-12-23 ; просмотров: 661 ; Нарушение авторских прав

    Array parse_url(string url)

    Работа с URL

    String convert_cyr_string(string str, string from, string to)

    Преобразование кодировок

    Для преобразования строк из одной кодировки в другую предназначена функция convert_cyr_string ():

    Функция convert_cyr_string преобразует строку str из кодировки from в кодировку to. Значения аргументов from и to— одиночные символы, определяющие кодировку:

    k —KOI8-R;

    w —Windows-1251;

    i — IS08859-5;

    Для преобразования кодировок многобайтовых строк предназначена функция mb_convert_encoding().

    string mb_convert_encoding(string str, string to-encoding [, mixed from-encoding])

    Функция возвращает строку str, преобразованную из кодировки from- encoding в кодировку to-encoding.

    Функция parse_url() позволяет разбить адрес на отдельные компоненты:

    Функция parse_url() обрабатывает URL , переданный строкой url, и возвращает его компоненты. Массив, возвращаемый функцией, включает множество различных существующих компонентов URL: «scheme», «host», «port», «user», «pass», «path», «query» и «fragment».

    Для разбора строки с параметрами («query») имеется специальная функция parse_str():

    void parse_str(string str [, array arr])

    Функция parse_str() интерпретирует строку str так, как если бы эта строка содержала в себе переменные и их значения и передавалась бы в URL. Если задан второй необязательный параметр аrr, то значения, найденные при помощи этой функции, сохраняются не в глобальных переменных, а в элементах указанного массива.

    Согласно спецификации RFC 1738 в URL не допускается использование пробелов, а также символов национальных алфавитов, поэтому для передачи русских слов через строку запроса URL или значение параметра следует преобразовать в безопасный режим при помощи функции urlencode():

    Функция urlencode о возвращает строку , в которой все не алфавитно-цифровые символы, за исключением дефиса, знака подчеркивания и точки заменены знаком процента (%), за которым следуют две шестнадцатеричные цифры, обозначающие код символа.

  • Понравилась статья? Поделиться с друзьями:
    Кодинг, CSS и SQL