2010-05-20 6 views
1

Согласно документации iconv_open() по: http://www.gnu.org/software/libiconv/documentation/libiconv/iconv_open.3.htmllibiconv - iconv_open() поведение по умолчанию?

«// TRANSLIT» означает, что, когда персонаж не может быть представлен в целевом наборе символов, он может быть аппроксимирована с помощью одного или нескольких символов.

и:

«// ИГНОРИРУЙТЕ» означает, что символы, которые не могут быть представлены в целевом наборе символов будут молча отбрасываются.

Но каково поведение по умолчанию, когда ни один не указан?

Спасибо, Doori Bar поведение

ответ

1

по умолчанию, чтобы остановить преобразование и возвращать -1, с errno набором для EILSEQ если символ, который не может быть преобразован в целевом наборе символов встречается.

(т. Е. Это отличается как от //TRANSLIT, так и от //IGNORE).

+0

Спасибо за разъяснение. Мне было интересно, можно ли проинструктировать iconv, просто -copy- эти байты/символы в выходной буфер? – DooriBar

+0

@DooriBar: Я так не верю. Это не было бы вообще полезно, так как байты от непереводимого символа не могут нести какое-либо особое значение в наборе символов назначения и, возможно, даже не представляют допустимую многобайтовую последовательность. – caf

+0

Это мой сценарий: моим источником является UTF-16LE, который -может содержать недопустимые многобайтовые последовательности. Я хотел бы преобразовать этот источник в UTF-8 и в зависимости от того, какие недопустимые байты не могут быть правильно представлены - прозрачно скопированы. В будущем, если мне нужно будет восстановить исходную последовательность UTF-16LE, я хочу иметь возможность конвертировать форму UTF-8 в UTF-16LE, будучи идентичной. Возможно ли это? или я должен перестать пытаться? – DooriBar

Смежные вопросы