Подтвердить что ты не робот

Как преобразовать ANSI-кодированный файл в UTF-8 с помощью Notepad ++?

У меня есть веб-сайт, и я могу отправить своих турецких персонажей в jQuery в Firefox, но Internet Explorer не отправляет моих турецких персонажей. Я посмотрел на исходный файл в блокноте, и эта кодовая страница файла - ANSI.

Когда я конвертирую его в UTF-8 без спецификации и закрываю файл, файл снова становится ANSI при повторном открытии.

Как я могу конвертировать мой файл из ANSI в UTF-8?

4b9b3361

Ответ 1

Относительно этой части:

Когда я конвертирую его в UTF-8 без файла bom и close, файл снова будет ANSI при повторном открытии.

Самое простое решение - полностью устранить проблему, правильно настроив Notepad ++.

Попробуйте SettingsPreferencesNew documentEncoding → выбрать 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 вернется к кодировке по умолчанию для пользовательской системы, что является ошибкой большую часть времени.