Что может пойти не так, если я преобразую файлы в кодировке ANSI в UTF-8? - PullRequest
0 голосов
/ 27 ноября 2008

У меня есть существующий веб-сайт ASP.NET 2.0, который хранится в Team Foundation Server 2005. Некоторые страницы / элементы управления закодированы как ANSI (согласно Notepad ++), а заголовок Content-Type установлен на:

<meta http-equiv="Content-Type" content="text/html; charset=windows-1252"/>

Я хотел бы изменить все страницы на UTF-8, и поэтому заголовок Content-Type на:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

Кроме изменения метаэлемента, я предполагаю, что мне также нужно изменить кодировку всех файлов. Я могу сделать это в Notepad ++, хотя, если у кого-то есть более быстрые методы, пожалуйста, укажите их.

С какими проблемами я могу столкнуться, когда дело доходит до слияния / сравнения в TFS?

Ответы [ 5 ]

2 голосов
/ 27 ноября 2008

Я бы написал скрипт на Python

for fn in os.listdir(srcdir):
    data = open(srcdir+"\\"+fn, "rb").read().decode("windows-1252")
    data = data.replace("charset=windows-1252", "charset=utf-8")
    open(srcdir+"\\"+fn, "wb").write(data.encode("utf-8"))

Обновление кодировки предполагает, что эта конкретная строка не произойдет в других местах; Вы можете сделать его более надежным, проверив более длинную строку, проверяет, существует ли старый файл в файле, делает Синтаксический анализ XML и т. Д.

Возможно, вам понадобится поставить подпись UTF-8 перед кодировкой UTF-8. данные; Вы найдете один в кодеках. BOM_UTF8

Я не знаю, каковы последствия этого изменения для TFS.

2 голосов
/ 27 ноября 2008

Это зависит от того, сколько текста в вашей кодовой базе использует символы вне диапазона ASCII, равного 0..127.

Возможно, вы сначала захотите отсканировать их, чтобы увидеть, какое влияние это окажет. Если ваша кодовая база в основном на английском языке, то вам, вероятно, не о чем беспокоиться.

0 голосов
/ 27 ноября 2008

Это не обязательно так. Я не знаю о ASP.net, но мы делаем все наши php-кодирования здесь, в Ansi и обслуживаем страницы в UTF8. Вся наша база данных также хранится в формате UTF8.

0 голосов
/ 27 ноября 2008

Выберите файл с символом выше диапазона ASCII 0-127. Откройте его с помощью блокнота, выберите «Сохранить как» и выберите кодировку UTF-8. Затем посмотрите, успешно ли конвертирован персонаж.

Чтобы автоматизировать процедуру, вы можете написать приложение, которое преобразует все файлы из ASCII в UTF-8, используя 1252 в качестве кодовой страницы. Если у вас нет символов выше 127, вам не нужно беспокоиться обо всем этом.

0 голосов
/ 27 ноября 2008

Что-то полезное, что я только что обнаружил, - это то, что вы можете щелкнуть правой кнопкой мыши по файлу в Source Control Explorer и выбрать «Свойства». Затем вы можете увидеть / изменить кодировку, насколько это касается TFS.

...