Ваш файл в основном хорошо, это в собственно UTF-8 и символ, который вы смотрите на это INVERTED QUESTION MARK (U+00BF) (хотя, кажется, использует некоторое наследие 8- бит, установленный для просмотра файла, а вывод od -x
- ориентированный на слова малоконечный, поэтому вы получаете шестнадцатеричный обратный порядок - последовательность 0xC2 0xBF, а не наоборот).
This article объясняет, что, когда Oracle пытается экспортировать неизвестный набор символов, он заменяет символы, которые он не может преобразовать с перевернутыми вопросительными знаками. Поэтому я думаю, вот что произошло здесь. Единственное правильное исправление - вернуться в вашу базу данных Oracle и экспортировать в надлежащем формате, где фигурные апострофы будут представлены (что, я думаю, должно быть на самом деле).
Если файл получен из чужой базы данных Oracle, попросите их снова выполнить экспорт или спросить их, каков должен быть символ, или проигнорировать проблему, или угадать, какой символ поставить там, и использовать ваш редактор. Если есть только несколько проблемных символов, просто сделайте это вручную. Если есть много, может быть, вы можете использовать контекстно-зависимые правила замещения, как
it¿s => it’s
dog¿s => dog’s
¿problem¿ => ‘‘problem’’
na¿ve => naïve
¿yri¿ispy¿rykk¿ => äyriäispyörykkä (obviously!)
Использование ¿
в качестве заполнителя для «я не знаю» проблематично, но Unicode на самом деле имеет решение: REPLACEMENT CHARACTER (U+FFFD). Думаю, вам это не понравится, но единственная действительная (контекстная) замена, которую вы можете выполнить программно, - s/\u{00BF}/\u{FFFD}/g
(это псевдокод Perl-ish, но используйте все, что вам нравится).
благодарит за ответ. Но мой источник - это плоский файл, а не база данных оракула. Есть ли способ получить эквивалентную команду unix, чтобы преобразовать ее, как iconv? –
Независимо от того, что созданный этот плоский файл помещает инвертированный знак вопроса. Таким образом, файл в порядке - нет способа вернуть его программно. Если вы можете с уверенностью угадать, каков должен быть символ (кудрявый апостроф?), Используйте свой редактор, чтобы изменить его. – tripleee
Но вы должны настроить среду для UTF-8, чтобы иметь возможность просматривать файл должным образом. – tripleee