Windows 1251 to utf 8 file

I need to convert a text file to UTF-8 format via Windows command prompt. This needs to be done on another machine and I do not have rights to install software on that machine. I need something like:

c:\notepad   source-file target-file --encoding option

Is there a Windows command prompt utility which can do it?

Kamil Maciorowski's user avatar

asked Jan 5, 2017 at 13:58

user1107888's user avatar

I need to convert a text file to utf-8 format via windows command prompt

You can easily do this with PowerShell:

Get-Content .\test.txt | Set-Content -Encoding utf8 test-utf8.txt

Further Reading

  • Convert from most encodings to utf8 with powershell

answered Jan 5, 2017 at 14:38

DavidPostill's user avatar

DavidPostillDavidPostill

154k77 gold badges354 silver badges395 bronze badges

13

Use iconv from GNUWin32 pack. It is much faster, especially if your files are about or more than 1 Gb.

"C:\Program Files (x86)\GnuWin32\bin\iconv.exe" -f cp1251 -t utf-8 source.txt > result.txt

Kamil Maciorowski's user avatar

answered Feb 21, 2018 at 15:09

Raul N-k's user avatar

Raul N-kRaul N-k

711 silver badge1 bronze badge

3

Here is for each convert *.text file to *.sql file:

foreach ($file in get-ChildItem *.txt) {
    Echo $file.name
    Get-Content $file | Set-Content -Encoding utf8 ("$file.name" +".sql")
 }

answered May 20, 2019 at 10:20

nobjta_9x_tq's user avatar

1

You can do this from the command prompt as follows:

powershell -command "Get-Content .\test.txt" > test-utf8.txt

It turns out that piping the output to a file from the command prompt saves as utf-8.

answered Sep 30, 2020 at 20:49

Gord Hooker's user avatar

1

POWERSHELL: # Assumes Windows PowerShell, use -Encoding utf8BOM with PowerShell Core. For multiple files:

FIRST SOLUTION:

$files = Get-ChildItem c:\Folder1\ -Filter *.txt 

foreach ($file in $files) {

    Get-Content $file.FullName | Set-Content "E:\Temp\Destination\$($file.Name)" -Encoding utf8BOM

}

OR, SECOND SOLUTION (for multiple files):

get-item C:\Folder1*.* | foreach-object {get-content -Encoding utf8BOM $_ | out-file ("C:\Folder1" + $_.Name) -encoding default}

OR, THE THIRD SOLUTION: (only for 2 files)

$a = "C:/Folder1/TEST_ro.txt"
 $b = "C:/Folder1/TEST_ro-2.txt"
 (Get-Content -path $a) | Set-Content -Encoding UTF8BOM -Path $b

answered Aug 1, 2022 at 14:19

Just Me's user avatar

Just MeJust Me

8161 gold badge16 silver badges40 bronze badges

For those who want to batch convert several files (e.g.: all *.txt files in folder and sub-folders):

dir *.txt -Recurse | foreach {
  # May remove the line below if you are confident
  Copy-Item $_ $_.bkp
  
  # Note that since we are reading and saving to the same file,
  # we need to enclose the command in parenthesis so it fully executes 
  # (reading all content and closing the file) before proceeding
  (Get-Content $_) | Set-Content -Encoding utf8 $_
}

answered Apr 12 at 13:46

J.Hudler's user avatar

You must log in to answer this question.

Not the answer you’re looking for? Browse other questions tagged

.

I need to convert a text file to UTF-8 format via Windows command prompt. This needs to be done on another machine and I do not have rights to install software on that machine. I need something like:

c:\notepad   source-file target-file --encoding option

Is there a Windows command prompt utility which can do it?

Kamil Maciorowski's user avatar

asked Jan 5, 2017 at 13:58

user1107888's user avatar

I need to convert a text file to utf-8 format via windows command prompt

You can easily do this with PowerShell:

Get-Content .\test.txt | Set-Content -Encoding utf8 test-utf8.txt

Further Reading

  • Convert from most encodings to utf8 with powershell

answered Jan 5, 2017 at 14:38

DavidPostill's user avatar

DavidPostillDavidPostill

154k77 gold badges354 silver badges395 bronze badges

13

Use iconv from GNUWin32 pack. It is much faster, especially if your files are about or more than 1 Gb.

"C:\Program Files (x86)\GnuWin32\bin\iconv.exe" -f cp1251 -t utf-8 source.txt > result.txt

Kamil Maciorowski's user avatar

answered Feb 21, 2018 at 15:09

Raul N-k's user avatar

Raul N-kRaul N-k

711 silver badge1 bronze badge

3

Here is for each convert *.text file to *.sql file:

foreach ($file in get-ChildItem *.txt) {
    Echo $file.name
    Get-Content $file | Set-Content -Encoding utf8 ("$file.name" +".sql")
 }

answered May 20, 2019 at 10:20

nobjta_9x_tq's user avatar

1

You can do this from the command prompt as follows:

powershell -command "Get-Content .\test.txt" > test-utf8.txt

It turns out that piping the output to a file from the command prompt saves as utf-8.

answered Sep 30, 2020 at 20:49

Gord Hooker's user avatar

1

POWERSHELL: # Assumes Windows PowerShell, use -Encoding utf8BOM with PowerShell Core. For multiple files:

FIRST SOLUTION:

$files = Get-ChildItem c:\Folder1\ -Filter *.txt 

foreach ($file in $files) {

    Get-Content $file.FullName | Set-Content "E:\Temp\Destination\$($file.Name)" -Encoding utf8BOM

}

OR, SECOND SOLUTION (for multiple files):

get-item C:\Folder1*.* | foreach-object {get-content -Encoding utf8BOM $_ | out-file ("C:\Folder1" + $_.Name) -encoding default}

OR, THE THIRD SOLUTION: (only for 2 files)

$a = "C:/Folder1/TEST_ro.txt"
 $b = "C:/Folder1/TEST_ro-2.txt"
 (Get-Content -path $a) | Set-Content -Encoding UTF8BOM -Path $b

answered Aug 1, 2022 at 14:19

Just Me's user avatar

Just MeJust Me

8161 gold badge16 silver badges40 bronze badges

For those who want to batch convert several files (e.g.: all *.txt files in folder and sub-folders):

dir *.txt -Recurse | foreach {
  # May remove the line below if you are confident
  Copy-Item $_ $_.bkp
  
  # Note that since we are reading and saving to the same file,
  # we need to enclose the command in parenthesis so it fully executes 
  # (reading all content and closing the file) before proceeding
  (Get-Content $_) | Set-Content -Encoding utf8 $_
}

answered Apr 12 at 13:46

J.Hudler's user avatar

You must log in to answer this question.

Not the answer you’re looking for? Browse other questions tagged

.

@akost

Embed

What would you like to do?

Bash script for recursive file convertion windows-1251 —> utf-8


This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters

Show hidden characters

#!/bin/bash
# Recursive file convertion windows-1251 —> utf-8
# Place this file in the root of your site, add execute permission and run
# Converts *.php, *.html, *.css, *.js files.
# To add file type by extension, e.g. *.cgi, add ‘-o -name «*.cgi»‘ to the find command
find ./ -name «*.php« -o -name «*.html« -o -name «*.css« -o -name «*.js« -type f |
while read file
do
echo « $file«
mv $file $file.icv
iconv -f WINDOWS-1251 -t UTF-8 $file.icv > $file
rm -f $file.icv
done

Основной утилитой перекодировки в нашем случае будет iconv. При помощи iconv запросто можно перекодировать один файл:

iconv -f WINDOWS-1251 -t UTF-8 src_filename > dst_filename
iconv --list - список кодировок.

Например: WINDOWS-1251, UTF-8, UTF-16, UNICODE, KOI8-R, ISO-8859-5, CP866


Скрипт для нескольких файлов (в примере все файлы с расширением txt

#!/bin/bash

FILES=./*.txt
   for i in $FILES
    do
    echo \"Converting $i from WINDOWS-1251 to UTF-8 encoding…\"
   mv $i $i.icv
      iconv -f WINDOWS-1251 -t UTF-8 $i.icv > $i
   rm -f $i.icv
   done

Для выполнения скрипта не забудьте назначить права и можно положить в системную папку, чтобы можно было выполнить в любой папке. Будьте внимательны, перезаписывая файлы!


После конвертирования файлов проекта, если проект пользуется базой MySQL, нужно сконвертировать и содержимое таблиц.

mysql> ALTER TABLE mytable CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

Источник1
Источник2

В общем случае, перекодировать можно в любом направлении, не обязательно именно в utf-8. Можно перекодировать между кириллическими кодировками, например, из koi-8 в cp1251, из utf-8 в koi-8, из utf-8 в cp1251 и обратно. Также рассмотрим ситуацию когда нужно изменить кодировку файлов не только в текущей директории, но и во вложенных.

В Linux перекодировку файлов удобно делать утилитами recode или enconv. Есть и другие перекодировщики, но про них пусть кто-то другой напишет.

Установить recode:

sudo yum install recode

Для использования enconv нужно установить пакет enca:

sudo yum install enca

Обе команды — recode и enconv — имеют кучу возможных опций, в простейших случаях для перекодирования одного или нескольких файлов в одной директории использование такое:

recode cp1251..utf8 myfile.txt
recode cp1251..utf8 *.txt
enconv -L russian -x utf8 myfile.txt
enconv -L russian -x utf8 *.txt

На что следует обратить внимание: для команды recode надо указать направление перекодировки (как минимум, исходную кодировку, в примере это cp1251; если не указана конечная кодировка, то программа заглянет в переменные окружения LC_ALL, LC_CTYPE, LANG). Для enconv указывать направление перекодировки необязательно вообще: программа способна определить исходную кодировку, проанализировав текст файла, а конечная кодировка будет взята из переменных окружения.

То есть, если надо перекодировать файлы в вашу «обычную» кодировку, используемую в системе, примеры могут выглядеть так:

recode cp1251 *.txt

enconv -L russian *.txt

Для того, чтобы программа enconv точнее могла определить исходную кодировку файла, ей можно помочь, подсказав, на каком языке написан текст в файле. В нашем примере указан русский язык: «-L russian».

Список языков, известных программе, можно посмотреть так:

enca --list languages

enca — это не опечатка. Программа enconv является частью пакета enca.

Результат:

 belarusian: CP1251 IBM866 ISO-8859-5 KOI8-UNI maccyr IBM855 KOI8-U
 bulgarian: CP1251 ISO-8859-5 IBM855 maccyr ECMA-113
 czech: ISO-8859-2 CP1250 IBM852 KEYBCS2 macce KOI-8_CS_2 CORK
 estonian: ISO-8859-4 CP1257 IBM775 ISO-8859-13 macce baltic
 croatian: CP1250 ISO-8859-2 IBM852 macce CORK
 hungarian: ISO-8859-2 CP1250 IBM852 macce CORK
 lithuanian: CP1257 ISO-8859-4 IBM775 ISO-8859-13 macce baltic
 latvian: CP1257 ISO-8859-4 IBM775 ISO-8859-13 macce baltic
 polish: ISO-8859-2 CP1250 IBM852 macce ISO-8859-13 ISO-8859-16 baltic CORK
 russian: KOI8-R CP1251 ISO-8859-5 IBM866 maccyr
 slovak: CP1250 ISO-8859-2 IBM852 KEYBCS2 macce KOI-8_CS_2 CORK
 slovene: ISO-8859-2 CP1250 IBM852 macce CORK
 ukrainian: CP1251 IBM855 ISO-8859-5 CP1125 KOI8-U maccyr
 chinese: GBK BIG5 HZ
 none:

Как перекодировать файлы из/в utf-8, cp1251, koi8 и т. д. рекурсивно в поддиректориях

Для рекурсивного изменения кодировки файлов надо привлечь команду find, затем перекодировать то, что она нашла.

Среди множества опций команды find имеется набор для выполнения действий над найденными файлами. Нас интересует опция «-exec command {} ;».

Здесь:

command — команда, которую надо выполнить для каждого найденного файла;

{} — вместо скобок будет подставлено имя файла, найденного командой find;

; — точка с запятой указывает для команды find, в каком месте заканчиваются параметры команды command.

Надо иметь в виду, что «{}» и «;» может понадобиться экранировать с помощью одинарных кавычек или «\», чтобы предотвратить интерпретацию командной оболочкой (shell expansion).

Собираем всё вместе. Чтобы перекодировать из cp1251 (windows-1251) в utf-8 рекурсивно в поддиректориях все файлы, имена которых заканчиваются на ‘.txt’, надо выполнить:

find /path/to/dir -name '*.txt' -exec recode cp1251..utf8 '{}' \;

или

find /path/to/dir -name '*.txt' -exec enconv -L russian -x utf8 '{}' \;

Ура!

  • Windows 11 языковая панель закреплена в панели задач не активна
  • Windows 2000 update rollup 1
  • Windows 2000 и windows me год выпуска
  • Windows 1251 is not a supported encoding name for information on defining a custom encoding
  • Windows 2000 theme for windows 7