Чи може GNU sed (для Windows) обробляти Unicode? Якщо так, чи це проблема кодової сторінки / локалі чи комутатор?


10

Я використовую і вимикаю GNU SED вже пару років. Іноді це трохи відкручує мене, але це робить непогану роботу ... для однобайтових наборів чарів!
Я раз і тоді помічаю, що посилання на GNU SED знають Unicode, але найближче, що я бачив, це його "бінарний" режим .. і двійковий не Unicode.
Чи може GSED обробляти текстовий файл Unicode з роздільною здатністю CodePoint, включаючи, особливо \ r \ n (Windows) ... і якщо він може, чи очікує це UTF-8, UTF-16 чи що? і як SED виявляє кодування?


1
Зазвичай unicode задається параметром \ uXXXX. Спробуйте цей хлопець з японської збірки sky.geocities.jp/hp_gabo200x/room_tool.html
Михайло

Відповіді:


1

Я не знаю багато про sed, але після деяких жорстких Googling, схоже, він підтримує різні кодові сторінки через змінну середовища LANG. Я вважаю, що UTF-8 насправді є дефолтом за відсутності LANG. Я не знаю, як налаштований порт Windows. У мене є велика підозра, що sed взагалі не здійснює обробку виявлення у вхідному потоці.

Джерела: /programming/67410/why-does-sed-fail-with-international-characters-and-how-to-fix http://omgili.com/mailinglist/cygwin/cygwin/com /20100520123926GA1432onderneming10xs4allnl.html

Ви також можете спробувати втечі символів, як згадувалося тут: http://forums.whirlpool.net.au/forum-replies-archive.cfm/841095.html Хоча це здається дуже громіздким.


@Mathew: Дякую Починає здаватися, що проблема може не полягати в самому SED.exe, але в тому, що Windows не дуже добре обробляє кодові сторінки на консолі cmd.exe. Можливо, це працює в PowerShell, але якщо мені доведеться туди поїхати, я скоріше зосереджуюся на Python. Наскільки я можу бачити, UDF -16 має власну гордість та радість (код-сторінка 1200, msdn.microsoft.com/en-us/library/dd317756%28VS.85%29.aspx ) доступний лише керованим програмам , що б це не означало, але це точно не працює в консолі .. Перетворити на UTF-8 і назад? У жодному разі! Пітон тут я приходжу. (або "Нікс і Баш")
Пітер.О

Звучить добре для мене. Я якось розгублений, як cmd.exe викликає проблему і як Python її вирішує (окрім відомих магічних сил Python ( xkcd.com/353 )), але я не збираюся робити вигляд, що розумію капризи cmd.exe. Удачі тобі!
Ванесса Фіппс

@fred: Прочитайте: .NET.
Привіт71

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