Як прочитати приховані символи текстового файлу?


8

Я створив текстовий файл із програми, яку я розробив.

Коли я надсилаю текстовий файл для перевірки системи СИСТЕМИ , вони (стороння система) кажуть, що файл недійсний і що файл містить три символи на початку файлу, які не дозволені, оскільки спеціальні символи не є правильними .

Вони також кажуть, що мені потрібно використовувати ISO 8859-1 або PC850 .

Ну, я використовую Notepad ++ , і я цього зовсім не бачу! Який найкращий зчитувач текстових файлів для подібних проблем?

Alt текст

У мене також є Mac, і я просто думав, що згадав про відкриття в TextMate ... WOW! Тепер я знаю, про що вони говорять!

Як я можу мати те саме в Windows?

Alt текст


1
Як осторонь: ви дивитесь на марку замовлення байтів UTF (BOM) документа, що кодується UTF-8. Якщо у додатку є інші способи сказати, що це UTF-8, то такий BOM не потрібен для кодування вмісту UTF-8, але хороший редактор знає, як з цим впоратися. Дивіться unicode.org/faq/utf_bom.html#bom2
Арджан

1
(На Mac також дивіться fileкоманду, щоб сказати, чи присутній BOM.)
Arjan

1
До речі, швидкий спосіб застосувати неправильне кодування на будь-якому комп’ютері: відкрийте файл у веб-переглядачі та явно встановіть кодування на ISO-8895-1 так, як ви це робили в TextMate. Далі зробіть файл перегляду для файлу.
Ар'ян

1
@Arjan не просто Mac. Будь-яка система * nix, будь то Linux або * nix. І як би там не було, команда xxd -p показує фактичні байти, тому набагато краще.
барлоп

Відповіді:


4

Ну, я використовую NotePad ++, і я цього зовсім не бачу! Який найкращий зчитувач текстових файлів для подібних проблем?

Проблема полягає в тому, що "хороший" текстовий редактор повинен мати можливість завантажувати всі текстові кодування прозоро - навіть дурні зламані, як-от UTF-8-плюс-BOM, - що заважає вам побачити проблему. Звичайно, хороший текстовий редактор повинен зберегти UTF-8 без фальшивого BOM або, принаймні, дати вам можливість зробити це, але ви не знатимете його повторно зберегти, якщо ви не побачите там «faux-BOM» .

Причина, коли ви бачите три високобайтові на початку файлу в TextMate, насправді в тому, що TextMate помилився і вгадав кодування як Latin-1 замість UTF-8. Це, ймовірно, відтворює поведінку служби, яку ви надсилаєте, і яка не знає про Unicode, але сама по собі не є бажаною функцією. Це також , чому æs і øs не вийшли.

Якщо ви хочете чітко бачити кожен байт у файлі, те, що ви хочете, це насправді не текстовий редактор, а шістнадцятковий редактор. Є на вибір багато, наприклад. xvi32 у Windows.

А потім виправте свою програму, щоб не виробляти фіктивні BOM; їм все-таки немає місця у файлі UTF-8, незважаючи на проблеми, які він викликає для програм Unicode. [Я не знаю, про що написано в додатку, але поширеною причиною небажаних BOM є використання Encoding.UTF8кодування .NET . A new UTF8Encoding(false)було б кращим.]

Незалежно від того, чи потрібна вам служба UTF-8 або якесь інше кодування, у будь-якому випадку вам потрібно буде запитати операторів цієї послуги. Якщо вони вже описують æу вашому файлі високі байти для et al як «невідповідних», ви можете зіткнутися з ситуацією, коли вони взагалі не підтримують жодні символи, що не належать до ASCII, і в цьому випадку вам доведеться розглянути транслітерацію символів відповідним чином для цільової мови, наприклад. æ-> ae.


2
Я не думаю, що TextMate помилився. Схоже, що кодування тексту було змінено вручну на Windows Latin-1.
Арко

2
фальшиві БОМи; у будь-якому випадку вони не мають місця у файлі UTF-8 - це правда для більшості потоків даних і для XML / HTML- файлів (які надають інші засоби для кодування), а також для більшості інших файлів, але не обов'язково для всіх файлів. Якщо програмі потрібно сканувати повний файл, щоб здогадатися, чи є щось UTF-8, то BOM може бути дуже корисним. Незважаючи на те, що він не визначає фактичний порядок байт , він вказує, що це UTF-8. І в цьому самому питанні присутність насправді дуже приємна, оскільки це показує, що вона явно виводиться як UTF-8, а не необхідний ISO 8859-1 або PC850. ;-)
Ар’ян

1
xvi32 - це чудова допомога ... люблю не вдруге здогадуватися навіть про "хороший" текстовий редактор, коли те, що я хочу, - це бачити необроблені - але не надто сирі :) - дані.
Майк М

6

Найпростіший спосіб перегляду подібних матеріалів у Windows - це використання команди "type".

Я б зробив щось подібне:

type filename.txt | more

1
-1 це жахливий спосіб, він або інтерпретує hex як ascii, коли це не так, або він вважає, що такі речі, як унікод LE bom, і не показують цього /. наприклад, збережіть файл як unicode, який містить unicode LE у блокноті. Перегляньте шістнадцятковий з xxd -p (від cygwin або xxd з vim7) тепер введіть цей файл, і він просто покаже вміст файлу, а не шестинадцятковий 16-бітовий код LE BOM унікоду, а не fffe на початку та подивіться, як це показує unicode BE BOM hex code feff - не все ясно
barlop

2

Frhed стрибає мені на думку ... це дуже приємний інструмент. І як зазначив Ар'ян, ви зберігаєте файл як закодований UTF-8 документ.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.