Как преобразовать ANSI-кодированный файл в UTF-8 с помощью Notepad ++?
У меня есть веб-сайт, и я могу отправить своих турецких персонажей в jQuery в Firefox, но Internet Explorer не отправляет моих турецких персонажей.
Я посмотрел на исходный файл в блокноте, и эта кодовая страница файла - ANSI.
Когда я конвертирую его в UTF-8 без спецификации и закрываю файл, файл снова становится ANSI при повторном открытии.
Как я могу конвертировать мой файл из ANSI в UTF-8?
Ответы
Ответ 1
Относительно этой части:
Когда я конвертирую его в UTF-8 без файла bom и close, файл снова будет ANSI при повторном открытии.
Самое простое решение - полностью устранить проблему, правильно настроив Notepad ++.
Попробуйте Settings
→ Preferences
→ New document
→ Encoding
→ выбрать UTF-8
без спецификации и проверить Apply to opened ANSI files
.
Таким образом, все открытые файлы ANSI будут обрабатываться как UTF-8 без спецификации.
Для объяснения того, что происходит, прочитайте комментарии ниже этого ответа.
Чтобы полностью узнать о Unicode и UTF-8, прочитайте эту отличную статью от Джоэла Спольского.
Ответ 2
Возможно, это не тот ответ, который вам нужен, но я столкнулся с подобной проблемой, поэтому решил поместить его здесь.
Мне нужно было преобразовать 500 xml файлов в UTF8 через Notepad ++. Почему Блокнот ++? Когда я использовал опцию "Кодировать в UTF8" (многие другие конвертеры используют одну и ту же логику), она испортила все специальные символы, поэтому я должен был явно использовать "Преобразовать в UTF8".
Вот несколько простых шагов для преобразования нескольких файлов через Notepad ++ без использования специальных символов (например, диакритических знаков).
- Запустите Notepad ++, а затем откройте меню Плагины- > Менеджер плагинов- > Показать
Менеджер плагинов
- Установите Python Script. Когда плагин установлен, перезапустите
приложение.
- Выберите меню Плагины- > Python Script → Новый Script.
- Выберите его имя, а затем пройдите следующий код:
convertToUTF8.py
import os
import sys
from Npp import notepad # import it first!
filePathSrc="C:\\Users\\" # Path to the folder with files to convert
for root, dirs, files in os.walk(filePathSrc):
for fn in files:
if fn[-4:] == '.xml': # Specify type of the files
notepad.open(root + "\\" + fn)
notepad.runMenuCommand("Encoding", "Convert to UTF-8")
# notepad.save()
# if you try to save/replace the file, an annoying confirmation window would popup.
notepad.saveAs("{}{}".format(fn[:-4], '_utf8.xml'))
notepad.close()
В конце концов запустите Script
Ответ 3
Если в вашем файле не указаны символы, отличные от ASCII (кодовые страницы 128 и выше), UTF-8 без спецификации совпадает с ASCII, байт для байта - поэтому Notepad ++ ошибается.
Что вам нужно сделать, так это указать кодировку символов при обслуживании ответа AJAX - например, с PHP, вы бы это сделали:
header('Content-Type: application/json; charset=utf-8');
Важная часть состоит в том, чтобы указать кодировку с каждым ответом JS - иначе IE вернется к кодировке по умолчанию для пользовательской системы, что является ошибкой большую часть времени.