Не удается сохранить знак в кодировке windows 1251

Такое сообщение выдается на нестандартные символы, например, «&», ‘ скрытые пробелы, некоторые тире и т.п.
Уберите из текста нестандартные символы.

Если не находите нестандартных символов, то рекомендуем текст сначала скопировать в блокнот Windows, сохранять текстовый файл в кодировке ANSI, и копировать в Excel-таблицу текст блокнота. Для большей верности, вставляйте текст в строку формул ячейки.

  • 01 Государственное задание и отчет о его выполнении
    • 01.1 Нормативные затраты
    • 01.2 Формирование ГЗ
    • 01.3 Отчет о выполнении ГЗ
  • 02 ФО ГЗ, субсидии на ИЦ и публичные обязательства
    • 02.1 Расчет субсидии на выполнение ГЗ
    • 02.2 Расчет субсидии на иные цели и публичные обязательства
    • 02.3 Стипендиальный фонд
  • 03 Бюджетирование и планирование ФХД, текущее финансирование, ОРД
    • 03.01 Бюджетирование и планирование ФХД
    • 03.02 Отчет о результатах деятельности и об использовании имущества
    • 03.03 Платные образовательные услуги (ПОУ)
    • 03.04 Рейтинг качества финансового менеджмента
    • 03.05 Сбор и обработка экономических показателей
  • 04 Прочие вопросы
    • 04.01 Отчет о публикационной активности
  • 05 Архив
    • Аналитический компонент комплексной системы управления финансами (АК КСУФ)
    • АСУ ПФХД
    • Государственное задание и отчет о его выполнении
    • Затраты на повышение заработной платы до МРОТ
    • Информационная система «Судебный мониторинг»
    • Информационный портал «Поступай правильно»
    • ИС сбора, обработки и аналитической оценки заявки на получение субсидий
    • Мониторинг коммунальных услуг
    • Мониторинг численности и оплаты труда работников учреждений
    • Отчетность по НИР
    • Перечень государственных услуг
    • Предоставление субсидий на основные средства
    • Программа повышения квалификации «Тьюторы»
    • Сбор информации по выплатам руководителю
    • Система управления НИР
    • Текущее финансирование подведомственных организаций
    • Форма Согласия налогоплательщика (плательщика страховых взносов) на признание сведений, составляющих налоговую тайну, общедоступными
    • Формирование ПФХД на 2020 год и плановый период 2021 и 2022 годов
    • Формирование финансового обеспечения государственного задания на НИР
  • Методическая поддержка
  • Техническая поддержка

Я загружаю txt файл на сервер, извлекаю из файла текст, пытаюсь сохранить этот текст в базу.
Я загружаю файл в кодировке windows-1251, при сохранении текста в базу возникает ошибка
SQLSTATE[HY000]: General error: 1366 Incorrect string value: ‘\xF0\xF3\xF1\xF1\xEA\xE8…’ for column ‘content’ at row 1
Я не совсем понимаю как вообще работать с разными кодировками.
Почему возникает ошибка? В utf-8 на символ выделяется 4 байта, в windows-1251 вроде точно меньше.
По задаче тексты могут быть на любом языке и в любой кодировке. Как можно это реализовать? Сделать поле content blob’ом?
Конвертация из одной кодировки в другую не вариант, так как кодировка текста всегда будет неизвестна.


  • Вопрос задан

  • 235 просмотров

При подготовке в Excel товаров для импорта в интернет-магазин может возникнуть проблема с непониманием некоторыми CMS файла CSV, который формирует Excel (Файл — Сохранить как — CSV):

Сохранить таблицу Excel как текстовый файл CSV

Появляются какие-то пробелы в конце текстовых строк, после чего конвертер Excel заключает текст в кавычки. Возникают многократные повторения текста с html-разметкой. Могут появиться проблемы с символами перевода строки (_x000D_/_x000A_). Имеют место глюки, если в процессе подготовки таблицы в результате работы формул у вас в пустых ячейках остались невидимые нулевые значения. Появляются другие непонятные символы ASCII, пустые строки в самом конце таблицы и т.д.
В результате админка магазина не распознает ни один из вариантов сохранения и отказывается принимать к импорту такой файл.

Решение:

  1. Сохраняем текущий лист таблицы в старом формате XLS (Книга Excel 97-2003).
  2. Открываем сохраненный файл в OpenOffice Calc.
  3. Сохраняем файл в CSV, кодировка Win-1251 (если у вас в описаниях нет Unicode-символов. При наличии таковых — проводим эксперименты с UTF-8, UTF-16 или KOI8-R), разделитель (;), разделитель текста («). Нижние чекбоксы пустые.

Сохранение CSV в OpenOffice Calc

К слову, в российской версии Excel разделителем CSV является не запятая (comma), а как и положено, точка с запятой.

Изменить разделитель по умолчанию можно в настройках Windows. Для этого:

— проверяем в параметрах Excel, выбрано ли использование системного разделителя. Это Файл → Параметры → Дополнительно → Параметры редактирования → «использовать системные разделители». По умолчанию Excel настроен именно так.

— далее (для Windows 10) запускаем Панель управления (введите в поиск Windows «Панель управления»):

Панель управления Windows

— выбираем Часы и регион → Региональные стандарты → Дополнительные параметры:

Региональные стандарты Windows 10

Дополнительные параметры

Проверяем разделитель, должен быть (;)

Разделитель элементов

В картинке выше можно изменить разделитель целой и дробной части чисел — точка или запятая. Запятая, принятая в Excel по умолчанию, не всегда устраивает CMS и не воспринимается при импорте в 1С.

Статья о подготовке CSV https://habr.com/ru/company/mailru/blog/129476/


Post Views:
3 423

Сохранение файла в кодировке Windows-1251: Решение проблемы с FileSaver.js

В современном веб-разработке часто возникает необходимость сохранять данные в файл на компьютере пользователя. Для этого используются различные библиотеки и технологии, одна из которых — FileSaver.js. Однако, при использовании этой библиотеки часто встречается проблема сохранения файлов в неправильной кодировке. В этом случае, мы рассмотрим проблему сохранения файлов в кодировке Windows-1251 и найдем решение для этой проблемы.

Проблема сохранения файлов в кодировке Windows-1251

Используя библиотеку FileSaver.js, вы можете сохранять данные в файл на компьютере пользователя. Однако, по умолчанию, эта библиотека сохраняет файлы в кодировке UTF-8. Если вам необходимо сохранять файлы в кодировке Windows-1251, вы столкнетесь с проблемой. В итоге, когда вы указываете нужную кодировку в параметрах функции saveAs(), она игнорируется, и файл все равно сохраняется в кодировке UTF-8.

Почему кодировка Windows-1251 не поддерживается FileSaver.js

FileSaver.js — это библиотека, которая использует функцию Blob для создания файла на стороне клиента. Однако, функция Blob не поддерживает кодировку Windows-1251. Вместо этого, она использует кодировку UTF-8 по умолчанию. Это означает, что даже если вы указываете кодировку Windows-1251 в параметрах функции saveAs(), она все равно будет игнорироваться, и файл будет сохранен в кодировке UTF-8.

Решение проблемы: преобразование кодировки

Чтобы решить эту проблему, вы можете использовать функцию TextEncoder для преобразования кодировки UTF-8 в кодировку Windows-1251. Функция TextEncoder позволяет преобразовать строку в байты в заданной кодировке. В этом случае, вы можете использовать функцию TextEncoder для преобразования кодировки UTF-8 в кодировку Windows-1251.

Пример кода

Ниже приведен пример кода, который демонстрирует, как использовать функцию TextEncoder для преобразования кодировки UTF-8 в кодировку Windows-1251:

// Создаем функцию для преобразования кодировки
function encodeWindows1251(str) {
  const encoder = new TextEncoder('windows-1251');
  const encodedStr = encoder.encode(str);
  return encodedStr;
}

// Создаем функцию для сохранения файла function saveFile(data, filename) const encodedData = encodeWindows1251(data); const blob = new Blob([encodedData], { type 'text/plain' ); const link = document.createElement('a'); link.href = URL.createObjectURL(blob); link.download = filename; link.click(); }

// Используем функцию для сохранения файла const data = 'Тестовый текст'; const filename = 'тестовый_файл.txt'; saveFile(data, filename);

Вывод

В этом случае, мы рассмотрели проблему сохранения файлов в кодировке Windows-1251 с помощью библиотеки FileSaver.js. Мы нашли решение этой проблемы, используя функцию TextEncoder для преобразования кодировки UTF-8 в кодировку Windows-1251. Пример кода демонстрирует, как использовать эту функцию для сохранения файла в кодировке Windows-1251.

Советы и рекомендации

  • Если вы столкнетесь с проблемой сохранения файлов в кодировке Windows-1251, попробуйте использовать функцию TextEncoder для преобразования кодировки UTF-8 в кодировку Windows-1251.
  • Убедитесь, что вы указываете правильную кодировку в параметрах функции saveAs().
  • Если вы используете библиотеку FileSaver.js, убедитесь, что вы используете последнюю версию библиотеки.

Ссылки на дополнительную информацию

  • FileSaver.js
  • TextEncoder
  • Windows-1251
    Сохранение файла в кодировке Windows-1251: Вопросы и ответы

В предыдущем разделе мы рассмотрели проблему сохранения файлов в кодировке Windows-1251 с помощью библиотеки FileSaver.js и нашли решение этой проблемы, используя функцию TextEncoder для преобразования кодировки UTF-8 в кодировку Windows-1251. В этом разделе мы ответим на часто задаваемые вопросы по теме сохранения файлов в кодировке Windows-1251.

Вопрос 1: Почему FileSaver.js не поддерживает кодировку Windows-1251?

Ответ: FileSaver.js — это библиотека, которая использует функцию Blob для создания файла на стороне клиента. Однако, функция Blob не поддерживает кодировку Windows-1251. Вместо этого, она использует кодировку UTF-8 по умолчанию.

Вопрос 2: Как преобразовать кодировку UTF-8 в кодировку Windows-1251?

Ответ: Для преобразования кодировки UTF-8 в кодировку Windows-1251 вы можете использовать функцию TextEncoder. Функция TextEncoder позволяет преобразовать строку в байты в заданной кодировке.

Вопрос 3: Как использовать функцию TextEncoder для преобразования кодировки?

Ответ: Чтобы использовать функцию TextEncoder для преобразования кодировки, вы можете создать экземпляр класса TextEncoder с параметром windows-1251 и использовать метод encode() для преобразования строки в байты в кодировке Windows-1251.

Вопрос 4: Как сохранить файл в кодировке Windows-1251 с помощью FileSaver.js?

Ответ: Чтобы сохранить файл в кодировке Windows-1251 с помощью FileSaver.js, вы можете использовать функцию saveAs() и указать кодировку Windows-1251 в параметрах функции. Однако, по умолчанию, FileSaver.js сохраняет файлы в кодировке UTF-8, поэтому вы должны использовать функцию TextEncoder для преобразования кодировки.

Вопрос 5: Как решить проблему сохранения файлов в кодировке Windows-1251?

Ответ: Чтобы решить проблему сохранения файлов в кодировке Windows-1251, вы можете использовать функцию TextEncoder для преобразования кодировки UTF-8 в кодировку Windows-1251. Это позволит вам сохранять файлы в кодировке Windows-1251 с помощью FileSaver.js.

Вопрос 6: Какие другие библиотеки поддерживают кодировку Windows-1251?

Ответ: Некоторые другие библиотеки, которые поддерживают кодировку Windows-1251, включают в себя:

  • js-file-saver: эта библиотека поддерживает кодировку Windows-1251 и позволяет сохранять файлы в этой кодировке.
  • file-saver-plus: эта библиотека также поддерживает кодировку Windows-1251 и позволяет сохранять файлы в этой кодировке.

Вопрос 7: Какие советы и рекомендации можно дать по теме сохранения файлов в кодировке Windows-1251?

Ответ: Некоторые советы и рекомендации по теме сохранения файлов в кодировке Windows-1251 включают в себя:

  • Используйте функцию TextEncoder для преобразования кодировки UTF-8 в кодировку Windows-1251.
  • Убедитесь, что вы указываете правильную кодировку в параметрах функции saveAs().
  • Используйте последнюю версию библиотеки FileSaver.js.

Вопрос 8: Какие ресурсы можно использовать для дополнительной информации по теме сохранения файлов в кодировке Windows-1251?

Ответ: Некоторые ресурсы, которые можно использовать для дополнительной информации по теме сохранения файлов в кодировке Windows-1251, включают в себя:

  • FileSaver.js
  • TextEncoder
  • Windows-1251

  • Автор темы
  • #1

Хочу сохранить файл в кодировке windows-1251, сохраняется все время в UTF-8.
Если просто iconv’ом конвертнуть то что записывается в файл, сохраняется в 1251, но отображается кракозябрами.

  • #2

Крокозяблы где, в файле или браузере?

  • Автор темы
  • #3

В браузере я не проверял (мне это не надо), кракозябры в файле.

  • #4

Если крякозяблы в файле, то это не ср1251

  • Автор темы
  • #5

Вообще да, всегда в utf-8 сохраняется. Как мне в 1251 перевести?

  • #6

ХЗ, я только что поробовал

PHP:

<?php
    $a = 'тест';
    $a = iconv('utf-8', 'windows-1251', $a);
    file_put_contents('/srv/www/test/htdocs/test.txt', $a);
?>

всё работает.

  • #7

Ещё как вариант скачать текст. редактор аля notepad++ там можно менять кодировку.

  • #8

ТС, под какой системой просматриваешь файл?

  • Автор темы
  • #9

Все работает, iconv не правильно юзал

  • #10

Ещё как вариант скачать текст. редактор аля notepad++ там можно менять кодировку.

Шикарный совет

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

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Windows movie maker вики
  • Почему не ставится whatsapp на windows 7
  • Cmd windows содержимое каталога
  • Кнопочный телефон на windows
  • Как включить другой рабочий стол на windows 10