Excel utf 8 в windows 1251

Все способы:

  • Работа с кодировкой текста
    • Способ 1: изменение кодировки с помощью Notepad++
    • Способ 2: применение Мастера текстов
    • Способ 3: сохранение файла в определенной кодировке
  • Вопросы и ответы: 19

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

Урок: Кодировка в Microsoft Word

Работа с кодировкой текста

Кодировка текста – эта набор электронных цифровых выражений, которые преобразуются в понятные для пользователя символы. Существует много видов кодировки, у каждого из которых имеются свои правила и язык. Умение программы распознавать конкретный язык и переводить его на понятные для обычного человека знаки (буквы, цифры, другие символы) определяет, сможет ли приложение работать с конкретным текстом или нет. Среди популярных текстовых кодировок следует выделить такие:

  • Windows-1251;
  • KOI-8;
  • ASCII;
  • ANSI;
  • UKS-2;
  • UTF-8 (Юникод).

Последнее наименование является самым распространенным среди кодировок в мире, так как считается своего рода универсальным стандартом.

Чаще всего, программа сама распознаёт кодировку и автоматически переключается на неё, но в отдельных случаях пользователю нужно указать приложению её вид. Только тогда оно сможет корректно работать с кодированными символами.

Некорректные символы в Microsoft Excel

Наибольшее количество проблем с расшифровкой кодировки у программы Excel встречается при попытке открытия файлов CSV или экспорте файлов txt. Часто, вместо обычных букв при открытии этих файлов через Эксель, мы можем наблюдать непонятные символы, так называемые «кракозябры». В этих случаях пользователю нужно совершить определенные манипуляции для того, чтобы программа начала корректно отображать данные. Существует несколько способов решения данной проблемы.

Способ 1: изменение кодировки с помощью Notepad++

К сожалению, полноценного инструмента, который позволял бы быстро изменять кодировку в любом типе текстов у Эксель нет. Поэтому приходится в этих целях использовать многошаговые решения или прибегать к помощи сторонних приложений. Одним из самых надежных способов является использование текстового редактора Notepad++.

  1. Запускаем приложение Notepad++. Кликаем по пункту «Файл». Из открывшегося списка выбираем пункт «Открыть». Как альтернативный вариант, можно набрать на клавиатуре сочетание клавиш Ctrl+O.
  2. Переход к отрытию файла в Notepad++

  3. Запускается окно открытия файла. Переходим в директорию, где расположен документ, который некорректно отобразился в Экселе. Выделяем его и жмем на кнопку «Открыть» в нижней части окна.
  4. Открытие файла в Notepad++

  5. Файл открывается в окне редактора Notepad++. Внизу окна в правой части строки состояния указана текущая кодировка документа. Так как Excel отображает её некорректно, требуется произвести изменения. Набираем комбинацию клавиш Ctrl+A на клавиатуре, чтобы выделить весь текст. Кликаем по пункту меню «Кодировки». В открывшемся списке выбираем пункт «Преобразовать в UTF-8». Это кодировка Юникода и с ней Эксель работает максимально корректно.
  6. Изменение кодировки файла в Notepad++

  7. После этого, чтобы сохранить изменения в файле жмем на кнопку на панели инструментов в виде дискеты. Закрываем Notepad++, нажав на кнопку в виде белого крестика в красном квадрате в верхнем правом углу окна.
  8. Сохранение файла в Notepad++

  9. Открываем файл стандартным способом через проводник или с помощью любого другого варианта в программе Excel. Как видим, все символы теперь отображаются корректно.

Корректное отображение символов в Microsoft Excel

Несмотря на то, что данный способ основан на использовании стороннего программного обеспечения, он является одним из самых простых вариантов для перекодировки содержимого файлов под Эксель.

Способ 2: применение Мастера текстов

Кроме того, совершить преобразование можно и с помощью встроенных инструментов программы, а именно Мастера текстов. Как ни странно, использование данного инструмента несколько сложнее, чем применение сторонней программы, описанной в предыдущем методе.

  1. Запускаем программу Excel. Нужно активировать именно само приложение, а не открыть с его помощью документ. То есть, перед вами должен предстать чистый лист. Переходим во вкладку «Данные». Кликаем на кнопку на ленте «Из текста», размещенную в блоке инструментов «Получение внешних данных».
  2. Переход к добавлению текста в Microsoft Excel

  3. Открывается окно импорта текстового файла. В нем поддерживается открытие следующих форматов:
    • TXT;
    • CSV;
    • PRN.

    Переходим в директорию размещения импортируемого файла, выделяем его и кликаем по кнопке «Импорт».

  4. Импорт файла в Microsoft Excel

  5. Открывается окно Мастера текстов. Как видим, в поле предварительного просмотра символы отображаются некорректно. В поле «Формат файла» раскрываем выпадающий список и меняем в нем кодировку на «Юникод (UTF-8)».
    Переход к выбору кодировки в Мастере текстов в Microsoft Excel

    Если данные отображаются все равно некорректно, то пытаемся экспериментировать с применением других кодировок, пока текст в поле для предпросмотра не станет читаемым. После того, как результат удовлетворит вас, жмите на кнопку «Далее».

  6. Мастер текстов в Microsoft Excel

  7. Открывается следующее окно Мастера текста. Тут можно изменить знак разделителя, но рекомендуется оставить настройки по умолчанию (знак табуляции). Жмем на кнопку «Далее».
  8. Второе окно мастера текста в Microsoft Excel

  9. В последнем окне имеется возможность изменить формат данных столбца:
    • Общий;
    • Текстовый;
    • Дата;
    • Пропустить столбец.

    Тут настройки следует выставить, учитывая характер обрабатываемого контента. После этого жмем на кнопку «Готово».

  10. Третье окно мастера текста в Microsoft Excel

  11. В следующем окне указываем координаты левой верхней ячейки диапазона на листе, куда будут вставлены данные. Это можно сделать, вбив адрес вручную в соответствующее поле или просто выделив нужную ячейку на листе. После того, как координаты добавлены, в поле окна жмем кнопку «OK».
  12. Координаты вставки в Microsoft Excel

  13. После этого текст отобразится на листе в нужной нам кодировке. Остается его отформатировать или восстановить структуру таблицы, если это были табличные данные, так как при переформатировании она разрушается.

Текст добавлен в файл в Microsoft Excel

Способ 3: сохранение файла в определенной кодировке

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

  1. Переходим во вкладку «Файл». Кликаем по пункту «Сохранить как».
  2. Переход в сохранить как в Microsoft Excel

  3. Открывается окно сохранения документа. С помощью интерфейса Проводника определяем директорию, где файл будет храниться. Затем выставляем тип файла, если хотим сохранить книгу в формате отличном от стандартного формата Excel (xlsx). Потом кликаем по параметру «Сервис» и в открывшемся списке выбираем пункт «Параметры веб-документа».
  4. Переход в сервис в Microsoft Excel

  5. В открывшемся окне переходим во вкладку «Кодировка». В поле «Сохранить документ как» открываем выпадающий список и устанавливаем из перечня тот тип кодировки, который считаем нужным. После этого жмем на кнопку «OK».
  6. Параметры веб-документа в Microsoft Excel

  7. Возвращаемся в окно «Сохранения документа» и тут жмем на кнопку «Сохранить».

Сохранение файла в Microsoft Excel

Документ сохранится на жестком диске или съемном носителе в той кодировке, которую вы определили сами. Но нужно учесть, что теперь всегда документы, сохраненные в Excel, будут сохраняться в данной кодировке. Для того, чтобы изменить это, придется опять заходить в окно «Параметры веб-документа» и менять настройки.

Существует и другой путь к изменению настроек кодировки сохраненного текста.

  1. Находясь во вкладке «Файл», кликаем по пункту «Параметры».
  2. Переход в параметры в Microsoft Excel

  3. Открывается окно параметров Эксель. Выбираем подпункт «Дополнительно» из перечня расположенного в левой части окна. Центральную часть окна прокручиваем вниз до блока настроек «Общие». Тут кликаем по кнопке «Параметры веб-страницы».
  4. Переход в параметры документа в Microsoft Excel

  5. Открывается уже знакомое нам окно «Параметры веб-документа», где мы проделываем все те же действия, о которых говорили ранее.
  6. Параметры веб-документа в Microsoft Excel

    Теперь любой документ, сохраненный в Excel, будет иметь именно ту кодировку, которая была вами установлена.

    Как видим, у Эксель нет инструмента, который позволил бы быстро и удобно конвертировать текст из одной кодировки в другую. Мастер текста имеет слишком громоздкий функционал и обладает множеством не нужных для подобной процедуры возможностей. Используя его, вам придется проходить несколько шагов, которые непосредственно на данный процесс не влияют, а служат для других целей. Даже конвертация через сторонний текстовый редактор Notepad++ в этом случае выглядит несколько проще. Сохранение файлов в заданной кодировке в приложении Excel тоже усложнено тем фактом, что каждый раз при желании сменить данный параметр, вам придется изменять глобальные настройки программы.

    Наша группа в TelegramПолезные советы и помощь

Ну положим, пишет в одну ячейку не скрипт, а Вы — что Вы ему сказали делать, то и делает…  
Я думал, сообразите или найдёте пример, куда этот text далее направить.  

  Например, вот готовый код по преобразованию текста. Тут всё есть. Вам нужна вторая, третья и последние три строки:  

  Const ForReading = 1  
Const ForWriting = 2  

  Set objFSO = CreateObject(«Scripting.FileSystemObject»)  
Set objFile = objFSO.OpenTextFile(«c:\test.txt», ForReading)  

  strText = objFile.ReadAll  
objFile.Close  

  strText = Replace(strText, «,», » «)  
strText = Replace(strText, «»»», » «)  

  Set objFile = objFSO.OpenTextFile(«c:\test.txt», ForWriting)  
objFile.Write strText  
objFile.Close  

  А кстати вариант с OLEPRNLib мне нравится больше. В ХР содержится изначально, про другие не знаю.

Если при импорте контактов вы видите нечитаемые символы, как на скриншоте, это значит, что кодировка файла не подходит для импорта в Unisender. Файл нужно перекодировать в UTF-8. Далее мы расскажем, как это сделать в Excel.

Ошибка отображения данных при неправильной кодировке файла.

Создаем и открываем новый Excel файл.

Создаем новый файл.

Переходим на вкладку «Данные», выбираем «Получение внешних данных», а далее — «Из текста».

получение данных из текста.

В окне для импорта текстового файла выбираем файл с неверной кодировкой и нажимаем кнопку «Импорт».

Импортируем файл с неправильной кодировкой.

Открывается мастер импорта текста.
С текущей кодировкой содержимое файла нечитабельное.

текущая кодировка.

В поле «Формат файла» перебираем кодировки, пока не найдём ту, в которой текст отображается правильно. Вариантов много, поэтому можно начать с форматов, которые начинаются со слова «Кириллица». Находим нужный формат, нажимаем «Далее».

выбор формата кодировки.

Выбираем символы-разделители. В нашем случае это запятая.

Нажимаем «Далее» — «Готово» — «OK»

выбираем символы-разделители.

Так выглядит импортированный текст в Excel.

как выглядит документ в ексель.

Теперь нажимаем «Файл» «Сохранить как».

Выбираем место, где будет храниться файл. Вводим название файла, тип файла выбираем CSV, ниже нажимаем «Сервис» «Параметры веб-документа».

сохраняем файл.

Переходим на вкладку «Кодировка», выбираем «Юникод UTF-8» и нажимаем «OK».

выбираем кодировку.

Файл сохранён.

Теперь импортируем его и видим, что текст отображается корректно.

Корректное отображение текста после смены кодировки.

Полезные ссылки

Как подготовить контакты к импорту
Как импортировать контакты
Как импортировать номера телефонов
Что такое отчёт об ошибках при импорте
Как очистить базу от неактивных контактов

Функции ChangeFileCharset и ChangeTextCharset предназначены для изменения кодировки символов в текстовых файлах и строках.

Исходную и конечную (желаемую) кодировку можно задать в параметрах вызова функций.

ВНИМАНИЕ: Функции чтения и сохранения текста в файл в заданной кодировке

Список доступных на вашем компьютере кодировок можно найти в реестре Windows в ветке
HKEY_CLASSES_ROOT\MIME\Database\Charset

Среди доступных кодировок есть koi8-r, ascii, utf-7, utf-8, Windows-1250, Windows-1251, Windows-1252, и т.д. и т.п.

Определить исходную и конечную кодировку можно, воспользовавшись онлайн-декодером:
http://www.artlebedev.ru/tools/decoder/advanced/
(после преобразования снизу будет написано, из какой кодировки в какую переведён текст)

Sub ПримерИспользования_ChangeTextCharset()
 
    ИсходнаяСтрока = "бНОПНЯ"
    ' вызываем функцию ChangeTextCharset с указанием кодировок
    ' (меняем кодировку с KOI8-R на Windows-1251)
    ПерекодированнаяСтрока = ChangeTextCharset(ИсходнаяСтрока, "Windows-1251", "KOI8-R")
 
    MsgBox "Результат перекодировки: """ & ПерекодированнаяСтрока & """", _
           vbInformation, "Исходная строка: """ & ИсходнаяСтрока & """"
 
End Sub
Function ChangeFileCharset(ByVal filename$, ByVal DestCharset$, _
                           Optional ByVal SourceCharset$) As Boolean
    ' функция перекодировки (смены кодировки) текстового файла
    ' В качестве параметров функция получает путь filename$ к текстовому файлу,
    ' и название кодировки DestCharset$ (в которую будет переведён файл)
    ' Функция возвращает TRUE, если перекодировка прошла успешно
    On Error Resume Next: Err.Clear
    With CreateObject("ADODB.Stream")
        .Type = 2
        If Len(SourceCharset$) Then .Charset = SourceCharset$    ' указываем исходную кодировку
        .Open
        .LoadFromFile filename$    ' загружаем данные из файла
        FileContent$ = .ReadText   ' считываем текст файла в переменную FileContent$
        .Close
        .Charset = DestCharset$    ' назначаем новую кодировку
        .Open
        .WriteText FileContent$
        .SaveToFile filename$, 2   ' сохраняем файл уже в новой кодировке
        .Close
    End With
    ChangeFileCharset = Err = 0
End Function
Function ChangeTextCharset(ByVal txt$, ByVal DestCharset$, _
                           Optional ByVal SourceCharset$) As String
    ' функция перекодировки (смены кодировки) текстовоq строки
    ' В качестве параметров функция получает текстовую строку txt$,
    ' и название кодировки DestCharset$ (в которую будет переведён текст)
    ' Функция возвращает текст в новой кодировке
    On Error Resume Next: Err.Clear
    With CreateObject("ADODB.Stream")
        .Type = 2: .Mode = 3
        If Len(SourceCharset$) Then .Charset = SourceCharset$    ' указываем исходную кодировку
        .Open
        .WriteText txt$
        .Position = 0
        .Charset = DestCharset$    ' назначаем новую кодировку
        ChangeTextCharset = .ReadText
        .Close
    End With
End Function

‘ Функция для перекодировки файла в UTF-8 без BOM (то же самое, что и UTF-8, только без первых 3 байтов)

Function ChangeFileCharset_UTF8noBOM(ByVal filename$, Optional ByVal SourceCharset$) As Boolean
    ' функция перекодировки (смены кодировки) текстового файла
    ' В качестве параметров функция получает путь filename$ к текстовому файлу,
    ' Функция возвращает TRUE, если перекодировка прошла успешно
    On Error Resume Next: Err.Clear
    DestCharset$ = "utf-8"
    With CreateObject("ADODB.Stream")
        .Type = 2
        If Len(SourceCharset$) Then .Charset = SourceCharset$        ' указываем исходную кодировку
        .Open
        .LoadFromFile filename$        ' загружаем данные из файла
        FileContent$ = .ReadText        ' считываем текст файла в переменную FileContent$
        .Close
        .Charset = DestCharset$        ' назначаем новую кодировку "utf-8"
        .Open
        .WriteText FileContent$
 
        'Write your data into the stream.

        Dim binaryStream As Object
        Set binaryStream = CreateObject("ADODB.Stream")
        binaryStream.Type = 1
        binaryStream.Mode = 3
        binaryStream.Open
        'Skip BOM bytes
        .Position = 3
        .CopyTo binaryStream
        .Flush
        .Close
        binaryStream.SaveToFile filename$, 2
        binaryStream.Close
    End With
    ChangeFileCharset_UTF8noBOM = Err = 0
End Function

Функция перекодировки текста в UTF-8 без BOM

Function EncodeUTF8noBOM(ByVal txt As String) As String
    For i = 1 To Len(txt)
        l = Mid(txt, i, 1)
        Select Case AscW(l)
            Case Is > 4095: t = Chr(AscW(l) \ 64 \ 64 + 224) & Chr(AscW(l) \ 64) & Chr(8 * 16 + AscW(l) Mod 64)
            Case Is > 127: t = Chr(AscW(l) \ 64 + 192) & Chr(8 * 16 + AscW(l) Mod 64)
            Case Else: t = l
        End Select
        EncodeUTF8noBOM = EncodeUTF8noBOM & t
    Next
End Function
  • 156693 просмотра

Макросы в Excel VBA Макросы Смена кодировки

Смена кодировки

Excel всё норовит сохранять текстовые файлы в Winodws-1251. Очень актуален вопрос преобразования текста в другие кодировки, в первую очередь в UTF-8.

Вот несколько полезных функций для решения подобных вопросов:

Перекодировка файла из кодировки SourceCharset$ в UTF-8

'filename - путь к файлу
'SourceCharset - исходная кодировка (необязательный параметр)
'BomDelete - удалять ли BOM?

Function ChangeFileCharset_UTF8noBOM(ByVal filename$, _
 Optional ByVal SourceCharset$, _
 Optional BomDelete As Boolean = True) As Boolean

 On Error Resume Next: Err.Clear
    
 Dim DestCharset As String 'Кодировка
 DestCharset = "utf-8"
    
 Dim FileContent As Variant
    
 With CreateObject("ADODB.Stream")
        
  .Type = 2
  'Исходная кодировка, если указана
  If Len(SourceCharset$) Then .Charset = SourceCharset$ 
  .Open
  .LoadFromFile filename$ 'Загружаем данные из файла
  'Считываем текст в переменную FileContent
  FileContent = .ReadText 
  .Close 'Закрываепм файл
  'Назначаем файлу новую кодировку "utf-8"
  .Charset = DestCharset 
  .Open 'Снова открываепм файл
  'Записываем текст в файл в новой кодировке
  .WriteText FileContent 

  'Удалить BOM?
  If BomDelete Then
   Dim binaryStream As Object
   Set binaryStream = CreateObject("ADODB.Stream")
   binaryStream.Type = 1
   binaryStream.Mode = 3
   binaryStream.Open
   'Удаляем BOM байты
   .Position = 3
   .CopyTo binaryStream
   .Flush
   .Close
   binaryStream.SaveToFile filename$, 2
   binaryStream.Close
  End If
    
 End With
    
 ChangeFileCharset_UTF8noBOM = Err = 0
    
End Function

Сохраняет текст в указанной кодировке в файл

'Функция сохраняет текст txt 
'в кодировке Charset$ в файл filename$
'koi8-r, ascii, utf-7, utf-8, utf-8noBOM, 
'utf-16, windows-1251, unicode и другие
Function SaveTextToFile(ByVal txt$, ByVal filename$, _
 Optional ByVal encoding$ = "utf-8noBOM") As Boolean
    
 Dim FSO As Object
 Dim ts As Object
 Dim binaryStream As Object
    
 On Error Resume Next: Err.Clear
 Select Case encoding$
    
  Case "windows-1251", "", "ansi"
   Set FSO = CreateObject("scripting.filesystemobject")
   Set ts = FSO.CreateTextFile(filename, True)
   ts.Write txt: ts.Close
   Set ts = Nothing: Set FSO = Nothing

  Case "utf-16", "utf-16LE"
   Set FSO = CreateObject("scripting.filesystemobject")
   Set ts = FSO.CreateTextFile(filename, True, True)
   ts.Write txt: ts.Close
   Set ts = Nothing: Set FSO = Nothing

  Case "utf-8noBOM"
   With CreateObject("ADODB.Stream")
    .Type = 2: .Charset = "utf-8": .Open
    .WriteText txt$

    Set binaryStream = CreateObject("ADODB.Stream")
    binaryStream.Type = 1: binaryStream.Mode = 3
	binaryStream.Open: 
	.Position = 3: .CopyTo binaryStream 'Skip BOM bytes
    .Flush: .Close
    binaryStream.SaveToFile filename$, 2
    binaryStream.Close
   End With
            
   Case Else
    With CreateObject("ADODB.Stream")
     .Type = 2: .Charset = encoding$: .Open
     .WriteText txt$
	 'Сохраняем файл в заданной кодировке
     .SaveToFile filename$, 2 
     .Close
   End With
            
 End Select
    
 SaveTextToFile = Err = 0: DoEvents
    
End Function

Перекодировка строки

Function ChangeTextCharset(ByVal txt$, ByVal DestCharset$, _
 Optional ByVal SourceCharset$) As String
    
 If Trim(txt$) = "" Then
    
  ChangeTextCharset = ""
    
 Else
    
  On Error Resume Next: Err.Clear
  With CreateObject("ADODB.Stream")
   .Type = 2
   .Mode = 3
   'Исходная кодировка
   If Len(SourceCharset$) Then .Charset = SourceCharset$ 
   .Open
   .WriteText txt$
   .Position = 0
   .Charset = DestCharset$ 'Назначаем новую кодировку
   ChangeTextCharset = .ReadText
   .Close
  End With
        
 End If
    
End Function

Перекодировка файла

'False если не получилось
Function ChangeFileCharset(filename As String, _
 DestCharset As String, _
 Optional SourceCharset As String) As Boolean
                            
 Dim FileContent As String 'Содержимое файла
                            
 On Error Resume Next: Err.Clear
 With CreateObject("ADODB.Stream")
  .Type = 2
  'Если начальная кодировка задана явно то отмечаем её
  If Len(SourceCharset) Then .Charset = SourceCharset
  .Open 'Открываем объект ADO
  .LoadFromFile filename 'Загружаем в объект файл
  FileContent = .ReadText 'Извлекаем контент
  .Close 'Закрываем объект
  .Charset = DestCharset 'Переустанавливаем кодировку
  .Open 'Снова открываем
  .WriteText FileContent 'Записываем в него контент
  .SaveToFile filename 'Сохраняем по тому же путив файл
  .Close 'Окончательно закрываем
 End With
    
 ChangeFileCharset = Err = 0 'Успешно?
    
End Function

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Что будет если удалить windows boot manager
  • Установка второго контроллера домена windows server 2012
  • Миграция windows server 2008 на windows server 2012 r2 active directory
  • Как установить игру файл pkg на компьютер windows 10
  • Windows 10 как отключить перезагрузку при обновлениях