Asp установка кодовой страницы для преобразования строк

Содержание

Использование кодовой страницы в операциях преобразования строк

При операциях конвертации строковых переменных в массивы типа char и обратно в языке MQL4 используется кодировка, соответствующая по умолчанию текущей ANSI кодировке операционной системы Windows (CP_ACP). Если требуется указать иной тип кодировки, то его можно задать дополнительным параметром для функций CharArrayToString(), StringToCharArray() и FileOpen().

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

Встроенные константы кодовых страниц

Текущая кодовая страница ANSI кодировка в операционной системе Windows

Текущая кодовая страница OEM.

Текущая кодовая страница Macintosh.

Примечание: Это значение преимущественно используется в ранее созданных программных кодах и теперь в нем нет необходимости, так как современные компьютеры Macintosh используют Unicode кодировку.

Кодировка Windows ANSI для текущего потока выполнения.

Кодировка windows 1251 в сайтостроении

Кодировка windows 1251 была создана в начале 90 годов для русификации программных продуктов, выпускаемых корпорацией Microsoft :

Кодировка является 8-битной и включает в себя символы славянской группы языков, в которую входят русский, белорусский, украинский, болгарский, македонский, сербский – это дает преимущество перед остальными кириллическими кодировками ( ISO 8859-5, KOI8-R, CP866 ). Однако у 1251-кодировки имеются и весомые недостатки:

  • 0xFF (25510) – это код, который зарезервирован для символа «я». В программах, которые не поддерживают чистый 8-ой бит, часто возникают непредсказуемые проблемы;
  • Нет псевдографики, которая присутствует в KOI8 , CP866 .

Ниже приведены символы из Code Page 1251 или сокращенно СР1251 ( числа под символами являются кодом в шестнадцатеричной системе такого же символа в Юникоде ):

Кодировка windows 1251 в html

Нередко у web-разработчиков и блогеров, обладающих различной квалификацией возникает проблема с кодировкой страниц: вместо подготовленного текста появляются неизвестные, нечитаемые символы. Чтобы разобраться с данной проблемой, необходимо понимать суть термина « кодировка страницы ».

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

Таблица кодировок не является универсальной, то есть, для расшифровки текста необходимо использовать ту, которая соответствует кодировке символов:

Для того чтобы html-документ корректно отобразился в браузере, необходимо указать используемую кодировку. Делается это следующим образом:

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

Кодировка windows 1251 в PHP

Ни для кого не является тайной, что генерация страниц проходит путем выборки и использования какой-то части информации, которая хранится в базе данных. При написании сайта на PHP , чаще всего это mysql :

Нередко при смене хостинга возникает проблема: различные кодировки информации в базе данных и в шаблонах страниц. Из-за этого одна сгенерированная страница может одновременно содержать несколько кодировок. Если информация на сайте представлена в кодировке виндовс 1251 , то и чтение из базы данных должно осуществляться с помощью таблицы, в которой представлена win 1251 кодировка.

Для согласования расшифровки необходимо выполнить функцию mysql_query(«SET NAMES cp1251») – это означает, что преобразование из машинного кода будет осуществляться согласно таблице cp1251 .

Кодировка windows 1251 в htaccess

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

Для того чтобы для веб-ресурса была задана кодировка виндовс-1251 , необходимо найти ( или создать ) файл .htaccess . Это файл, который хранит в себе дополнительные настройки и описания конфигураций web-сервера.

В нем для установки кодировки следует прописать следующие строки:

  • DefaultLanguage ru;
  • AddDefaultCharset windows-1251;
  • php_value default_charset «cp1251».

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

Asp установка кодовой страницы для преобразования строк

Здравствуйте, хочу поменять кодировку с Utf-8 на windows1251

Но оно почему то не преобразовывается.
По умолчанию кодировка строк в Windows — utf-8?
Или я что то не то делаю??

Ответы

  • Помечено в качестве ответа ansi_str 25 марта 2012 г. 9:07

Все ответы

Мы можете описать то, что хотите сделать? Т.е. вы откуда-то получаете эту строку и куда-то записываете, на каком этапе неверная кодировка?

Видимо вам нужно не менять кодировку, а исправить метод SendSms, через что он работает? Возможно там нужно указать правильную кодировку.

Дмитрий, есть сервис рассылки сообщений(по SMS)
Нужно ввести номер абонентка, кому нужно доставить сообщение + текст сообщения передать

В документации прописано, что сообщение должно быть в кодировке 1251
Я делаю так — заношу в url текст + какие то прочие данные — не важно в данном случае и используя WebResponse + WebRequest посылаю запрос на сервер в виде url и от него получаю ответ(что всё гуд)
Но почему то текст сообщения, приходящего на телефон — не в той кодировке.
Вот и не знаю пока — почему так

Во время записи данных в WebRequest указывайте кодировку. У вас же POST запрос идет? Т.е. сразу из строки получайте массив байт в Windows-1251 и этот массив записывайте в исходящий поток. А нужный Encoding еще можно попробовать получить так — Encoding.GetEncoding(1251);

Во время записи данных в WebRequest указывайте кодировку. У вас же POST запрос идет? Т.е. сразу из строки получайте массив байт в Windows-1251 и этот массив записывайте в исходящий поток. А нужный Encoding еще можно попробовать получить так — Encoding.GetEncoding(1251);

Нет, запрос идёт GET — http://www.websms.ru/http_in5.asp?http_username=логин&http_password=пароль&phone_list=71231234567&message=текст сообщения&format=xml

Илон Маск рекомендует:  Свойства списков

В документации прописано — что можно использовать POST, но я нет примера

Работа со строками в .NET — Преобразование между различными кодировками

Written on 26 Декабря 2006 . Posted in .NET Framework

ОГЛАВЛЕНИЕ

Преобразование между различными кодировками

Иногда я с содроганием вспоминаю времена, когда мнеприходилось писать код с различными вариантами использования библиотек MFC и ATL. По некоторым причинамстроки в объектах были однобайтовыми, а вот строковые параметры в методы COM-объектов приходили двухбайтовыми (BSTR),а еще временами использовались библиотеки на C, вкоторые строки передавались опять же в однобайтовом виде.

В .NET Framework все строки состоят только из двухбайтовых символов Unicode и это, поверьте мне, здорово. Некоторые проблемывозникают лишь тогда, когда нужно записать текст в файл или поток. По умолчанию для этого используется кодировка UTF-8. К сожалению, невсегда можно использовать только кодировку UTF-8.Случаи бывают разные – например, нужно прочитать данные из файла, записанного вкодировке Cyrillic(Windows).

Для решения подобных задач служит тип System.Text.Encoding, позволяющий осуществлять преобразования из одной кодировки в другую. Для стандартных кодировок (ASCII, BigEndianUnicode, Unicode, UTF7, UTF8) у типаEncoding есть соответствующие статические свойства. Чтобы использовать другие кодировки, требуется вызвать метод GetEncoding, передав ему либо название кодировки, либо номер кодовой страницы.

Построчное чтение текста из файла, записанного в знакомой многим русской кодировке MS-DOSможно реализовать так:

Если нужно произвести перекодирование массива байт в строкуи обратно, то это можно сделать с помощью соответствующих методов типа Encoding – GetBytes и GetString.

Установка кодировки в UTF-8 для текущего соединениния с MySQL [дубликат]

На данный вопрос уже ответили:

Результат sql-запроса возвращается не в UTF-8 кодировке. Пытался установить кодировку с помощью функции mysql_set_charset(‘utf8’,$db) , но по все видимости функция не работает, при том, что MySQL версии 5.0.7. Как можно по другому задать кодировку соединения, но не используя SET NAMES ?

З.Ы. Когда работал с той же таблицей при помощи PDO , при установке кодировки:

Поля возвращались в UTF-8 .

Отмечен как дубликат участником Ипатьев php Участники со знаками php могут единолично закрывать вопросы с меткой php как дубликаты, а также повторно открывать их при необходимости. 26 окт ’17 в 12:35 .

Подобный вопрос задавали ранее и на него уже получен ответ. Если представленные ответы не являются исчерпывающими, пожалуйста, задайте новый вопрос.

5 ответов 5

Самый 100%ый код для 100%ого UTF-8 :D

    Оригинальное API MySQL (функции mysql_ ) устарело, начиная с версии PHP 5.5.0, и удалено в PHP 7.0.0.

Для улучшенного модуля MySQL (MySQL Improved) предпочтительным способом является использование метода set_charset().

Использование для этих целей метода query() (например: SET NAMES ‘utf8’ ) не рекомендуется.

В PDO следует указывать кодировку соединения в параметре dsn при создании экземпляра класса работы с бд:

CHCP – просмотр или изменение кодовой страницы в командной строке Windows.

Команда CHCP используется для просмотра или изменения текущей кодовой страницы в окне командной строки Windows. Кодовая страница (Code Page или сокращенно CP) определяет соответствие между двоичным кодом и соответствующим ему символом, отображаемом на экране. Для кодирования текстов на русском языке (то есть букв кириллицы) наиболее широко применяются следующие кодовые страницы:

— Windows-1251, она же Microsoft code page 1251 (CP1251) в операционных системах семейства Windows;

— Кодовая страница CP866, она же IBM code page 866 — в операционных системах семейства DOS, а также в приложениях командной строки Microsoft Windows;

Стандартно, в приложениях командной строки, используется кодовая страница 866 , что соответствует DOS-кодировке. Окно приложения CMD.EXE запускается с установленной кодовой страницей 866 . Изменение кодовой страницы действует только по отношению к текущему сеансу CMD.

Примеры использования команды CHCP:

chcp — отобразить текущую кодовую страницу.

chcp 1251 — установить кодовую страницу, соответствующую Windows-кодировке.

chcp 866 — установить кодовую страницу, соответствующую DOS-кодировке.

При создании командных файлов, необходимо учитывать то обстоятельство, что текст на русском языке должен быть представлен в DOS-кодировке.

О кодировках и кодовых страницах

Вряд ли это сейчас сильно актуально, но может кому-то покажется интересным (или просто вспомнит былые годы).

Начну с небольшого экскурса в историю компьютера. Поскольку компьютер использовался для обработки информации, то он просто обязан представлять эту информацию в «человеческом» виде. Компьютер хранит информацию в виде чисел (байтов), а человек воспринимает символы (буквы, цифры, различные знаки). Значит, надо сделать сопоставление число символ и задача будет решена. Сначала посчитаем, сколько символов нам надо (не забудем, что «мы» — американцы, использующие латинский алфавит). Нам надо 10 цифр + 26 заглавных букв английского алфавита + 26 строчных букв + математические знаки (хотя бы +-/*=> + можно определить соответствующий ей код в Unicode (сейчас в кодовых страницах для каждого 8-битного кода показывается 16-битный код Unicode) и потом при необходимости вывести этот символ для любой кодовой страницы, где он присутствует. В настоящее время проблема кодировок и перекодировок для пользователей практически исчезла, но все же изредка приходят письма, где либо тема письма либо содержание «не в той» кодировке.

Интересно, что примерно год назад проблема кодировок ненадолго всплыла при «наезде» ФАС на сотовых операторов, мол те дискриминируют русскоязычных пользователей, поскольку за передачу кириллицы берут больше. Это объясняется техническим решением, выбранным разработчиком протокола SMS связи. Если бы его россияне разработали, они бы, возможно, отдали приоритет кириллице. В указанной статье «начальник управления контроля транспорта и связи Дмитрий Рутенберг отметил, что существуют и восьмибитные кодировки для кириллицы, которые могли бы использовать операторы.» Во как — на улице 21-й век, Unicode шагает по миру, а господин Рутенберг тянет нас в начало 90-х, когда шла «война кодировок» и проблема перекодировок стояла во весь рост. Интересно, в какой кодировке должен получить СМС Вася Пупкин, пользующийся финским телефоном, находящийся в Турции на отдыхе, от жены с корейским телефоном, отправляющей СМС из Казахстана? А от своего французского компаньона (с японским телефоном), находящегося в Испании? Думаю, никакой начальник ответа на этот вопрос дать не сможет. К счастью, это «экономное» предложение не воплотилось в жизнь.

Юный читатель может спросить — а что помешало сразу использовать Unicode, зачем были придуманы эти заморочки с кодовыми страницами? Думаю, дело в финансовой стороне проблемы. Unicode требует в 2 раза больше памяти, а память стоит денег (и дисковая и ОЗУ). Стал бы американец покупать компьютер на 1-2 тыс дороже из-за того, что «теперь новая ОС требует больше памяти, но позволяет без проблем работать с русским, европейскими, арабскими языками»? Боюсь, простой англоязычный покупатель воспринял бы такой аргумент «неадекватно» (и обратился бы к другим производителям).

Илон Маск рекомендует:  Лекции по конструированию компиляторов глава 2 лексический анализ

Использование кодовой страницы в операциях преобразования строк

При операциях конвертации строковых переменных в массивы типа char и обратно в языке MQL4 используется кодировка, соответствующая по умолчанию текущей ANSI кодировке операционной системы Windows (CP_ACP). Если требуется указать иной тип кодировки, то его можно задать дополнительным параметром для функций CharArrayToString(), StringToCharArray() и FileOpen().

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

Встроенные константы кодовых страниц

Текущая кодовая страница ANSI кодировка в операционной системе Windows

Текущая кодовая страница OEM.

Текущая кодовая страница Macintosh.

Примечание: Это значение преимущественно используется в ранее созданных программных кодах и теперь в нем нет необходимости, так как современные компьютеры Macintosh используют Unicode кодировку.

Кодировка Windows ANSI для текущего потока выполнения.

Asp установка кодовой страницы для преобразования строк

Перемещено из форума Visual Foxpro, Foxpro for DOS

Всем привет.
Есть обычная DBF таблица (VFP8),
есть WEB сервер и ASP страничка с кодом:

set m_cn = Server.CreateObject(«ADODB.Connection»)
set m_rs = Server.CreateObject(«ADODB.Recordset»)
Response.CodePage = 1251
Response.CharSet = «windows-1251»
Session.CodePage = 1251
m_kod = trim(Request.QueryString(«kod»))
m_nap = trim(Request.QueryString(«napr»))
sSQL = «insert into knapr2 (kod, nazv) values (‘» & m_kod & «‘ , ‘» & m_nap & » ‘)»
m_cn.Open «prov > m_cn.Execute (sSQL)
m_cn.close

Кодовая таблица этой вебстраницы, тоже определяется как
Response.write(» «)
Код отрабатывается как нужно, вот только вместо русских букв — пишутся эти самые кракозябры
Спрашивал на форуме по АСП. С их точки зрения — всё корректно.
Может лисоводы что подскажут?
Александр

Re: ASP & DBF & кракозябры
piva

Сообщений: 18541
Откуда: Курган

Дата: 16.12.05 12:24:03

Не знаю — если только в самой таблице кодовая страница не 1251
А так у меня тока сругалось на Session.CodePage=1251 а в остальном все отработало нормльно и вывод полей, после выборки показывается с нормальными русскими буквами

Re: ASP & DBF & кракозябры
Sasha K
Автор

Сообщений: 54

Дата: 31.01.06 11:47:36

ПРивет.
Сорри за задержку.
Проблемы.
Вернулся к даному вопросу.
Выборка идёт и у меня без проблем.
Проблема в том, что-бы вставить запись в таблицу
Я уже пытался и так:
CPCONVERT(1251, 866, ‘» & m_com & » ‘)
И в одну сторону, и вдругую.\
И str(CPDBF()) записывал (показывает 1251

sSQL = «insert into iuser (kod0, iname, ipassw, comment, ip, count, dat)
values (‘» & m_kod & «‘ , ‘» & m_use & » ‘, ‘» & m_pas & » ‘, CPCONVERT(1251, 866, ‘» & m_com & » ‘), ‘» & m_ipa & » ‘, 1, CTOT(»))»
Всё равно, пишет в таблицу крякозябры

Re: ASP & DBF & кракозябры
piva

Сообщений: 18541
Откуда: Курган

Дата: 31.01.06 12:28:09

А у таблы какой CPDBF стоит ?

Re: ASP & DBF & кракозябры
Igor Korolyov

Сообщений: 33149

Дата: 31.01.06 13:47:03

Какая версия провайдера? Не возвращает ли часом CPCURRENT(1252)? Читал ли вот это:
vfpdev.narod.ru
vfpdev.narod.ru

Re: ASP & DBF & кракозябры
Sasha K
Автор

Сообщений: 54

Дата: 01.02.06 11:24:51

Опаньки.
Строка sSQL1 = «insert into iuser (commentt) values (str(CPCURRENT())»
записала 1252.
В папке C:\Program Files\Common Files\System\Ole DB
нашёл vfpoledb.dll версии 8.0.0.3117
(Установлен 6-й и 8-й фоксы. 8-ка с сервиспаком) OC Win-2003
Это должно удовлетворять требованиям согласно
vfpdev.narod.ru

В реестре
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage\
ACP = 1251
MACCP = 10007
OEMCP = 866
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Language\
Default = 0419

Поможет ли переустановка Microsoft OLE DB Provider for Visual FoxPro 9.0?
Александр

Re: ASP & DBF & кракозябры
Sasha K
Автор

Сообщений: 54

Дата: 01.02.06 11:43:44
Re: ASP & DBF & кракозябры
Sasha K
Автор

Сообщений: 54

Дата: 01.02.06 12:12:35
Re: ASP & DBF & кракозябры
Влад Колосов

Сообщений: 22664
Откуда: Ростов-на-Дону

Дата: 01.02.06 12:45:35

Может использовать SET NOCPTRANS?

Re: ASP & DBF & кракозябры
Sasha K
Автор

Сообщений: 54

Дата: 01.02.06 16:07:17

> Может использовать SET NOCPTRANS?

Вопрос, а где это использовать?
В смысле как?
Александр

Re: ASP & DBF & кракозябры
MichaelD

Сообщений: 7578

Дата: 02.02.06 11:59:58

> есть WEB сервер и ASP страничка с кодом:

> Переустановил 9-й провайдер версии 9.0.0.3504
> Всё-равно CpCurrent() возращает 1252

— Попробуй ASPX перед использованием переустановить System.Threading.Thread.CurrentThread.CurrentUICulture
если там не то. типа:

— В VFP 9 появилась функция SYS(3101 [, nCodePage]) для установки требуемой «кодовой страницы» т.ч. попробуй воспользоваться непосредственно Init() твоей VFP-COM-компоненты.

Думаю, для VFP OLEDB ниже чем 9.0 ты чего-то не заметил.

Re: ASP & DBF & кракозябры
Sasha K
Автор

Сообщений: 54

Дата: 02.02.06 13:12:30
Re: ASP & DBF & кракозябры
MichaelD

Сообщений: 7578

Дата: 02.02.06 14:44:19

> Попробовал внести изменения в библиотеку vfp8t.dll (менял Е4 на Е3)
> Безрезультатно

вобще-то vfp8t.dll существует в двух версиях ( vfpdev.narod.ru ) :

vfp8t.dll —— 00003CD8 E4->E3
vfp8t.dll(sp1)- 00003CE3 E4->E3

Проверка — в написании простейшей VFP-COM-компоненте. хм, именно в vfp8 / vfp8(sp1) типа:

и её вызова, типа:

Это одно, и это собственно всё.

Почему subj? — это может быть другое.
Я и мею ввиду, что даже при условии, что «указанное выше правильно».

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

— пробуешь/проверяешь на одном компе (разработчика),
— а не работает, совершенно на другом — сервере..

Я именю ввиду, что «фоксова среда» дожна быть совершенно одной и тойже, как у разаботчика/тестера, так и сервера, на котором это всё используется/крутится.

(Для регистрации COM-компонент на сервере, требуется иметь права/зайти под «локальным администратором сервера» . )

Исправлено: MichaelD, 02.02.06 14:52

Re: ASP & DBF & кракозябры
Sasha K
Автор

Сообщений: 54

Дата: 03.02.06 10:40:51
Re: ASP & DBF & кракозябры
MichaelD

Сообщений: 7578

Дата: 03.02.06 13:04:13

> когда говорим о COM-компоненте на сервере.
> Это компонента написана на фоксе и зарегистрирована на сервере.

Значит в этом контексте речь о vfp8t.dll(sp1) именно той машины, на которой установлена работает VFP-COM-компонента, исправить там следует:

vfp8t.dll(sp1) 00003CE3 E4->E3

> Но дело в том, что я не использую такую компоненту.
> Я конекчусь через драйвер прямо со странички (см. код первого сообщения)

Это речь о машине клиента, на которой установлена vfpoledb.dll и используется VFP OLE DB Provider (сервер здесь ни причём. ) . и по этому поводу (http://vfpdev.narod.ru/docs/spcall_r.html#cpsolve — «Решение проблем Code Page» для vfpoledb.dll) написано :


— vfpoledb.dll (8.0.0.3006) 0004af7e E4->E3
— vfpoledb.dll (8.0.0.3117) 0004b43c E4->E3

У vfpoledb.dll версий 8.0.0.2521 и 9.0.0.2412 проблемы не обнаружено.

Если в правильных местах:

— в первом случае на сервере, где VFP-COM «крутиться»,
— во втором на клиенте, где VFP OLE DB Provider используется

всё исправить правильно, то всё правильно и будет работать. Как надеюсь.

Где VFP-runtime установлено, советую править vfp8t.dll и vfpoledb.dll одновременно, т.к. не гарантировано, что будет использовано только одно из них.

Относительно использования: SET NOCPTRANS TO там написано ( vfpdev.narod.ru ) :

На вопрос: а как побороть, если не делать исправлений в vfpXt.dll? Ответ может быть таким:
— отменить неявные преобразования на сервере, используя установку SET NOCPTRANS TO &lcListNamesAllLields,
— а у временных курсоров использовать утилиту . /Tools/Cpzero/Cpzero.prg для явной переустановки кодовой страницы перед использованием.

Вроде бы предельно понятно.

sSQL = «insert into knapr2 (kod, nazv) values (‘» & m_kod & «‘ , ‘» & m_nap & » ‘)»

здесь нужно бы:
— удостоверится, что там (значения строк: m_kod, m_nap) не в unicode-кодировке
— слабо представляю себе, что SET NOCPTRANS TO . может оказать какое-нить влияние на SQL-INSERT

Исправлено: MichaelD, 04.02.06 11:49

Re: ASP & DBF & кракозябры
Igor Korolyov

Сообщений: 33149

Дата: 07.02.06 03:27:37

Recognition of any valid Visual FoxPro configuration file (.fpw) that is stored in the same directory as the Provider. However, only the following settings in the configuration file are recognized by the Provider.
MVCOUNT which sets the maximum number of variables that Visual FoxPro can maintain.
ENGINEBEHAVIOR which specifies the Engine compatibility level.
TABLEVALIDATE which specifies the level of table validation to perform.
REFRESH which specifies how often local memory buffers are refreshed with changes from other users on the network.

International Support
The Visual FoxPro OLE DB Provider provides international language support for the following:
— Double-byte character sets (DBCS)
— Multiple collating sequences
A collating sequence defines the sort order for data stored in a Visual FoxPro table or database. The Visual FoxPro OLE DB Provider is configured to use collating sequences that support the language version of your operating system by default.

А про CP ни слова
Видимо либо жёстко берётся текущая локаль (для ASP.NET это конечно отдельная настройка — и надо залазить именно в ASP-ный профиль пользователя — т.е. не тот под которым работают все прочие интерактивные приложения), либо как ты нарисовал с CurrentUICulture — но тут меня терзают смутные сомнения — ибо я вот фокс запустил в CP 1252 (через конфиг), а из него создал ADO использующее VFP OLEDB 9 SP1 — так вот «изнутри» CPCURRENT() бодро отрапортовал 1251 — тогда как собственно в среде всё было как и положено — 1252.

Re: ASP & DBF & кракозябры
MichaelD

Сообщений: 7578

Дата: 07.02.06 13:07:44

Скажу откровенно, тонкости 9-ки мной не исследовались. Было обнаружено, что прежние глюки пропали. и это сильно порадовало! На этом тесты закончились.

> но тут меня терзают смутные сомнения — ибо я вот фокс запустил в CP 1252 (через конфиг),
> а из него создал ADO использующее VFP OLEDB 9 SP1 — так вот «изнутри» CPCURRENT() бодро
> отрапортовал 1251 — тогда как собственно в среде всё было как и положено — 1252.

А чего тебе не нравится?
— ну видимо, «сам с усам». и самостоятельно берёт из настроек OS
— а не побовал в ХП поюзать SYS(3101 [, nCodePage]) для установки требуемой CP?

Однако, глядя на описалово к SYS(3101) маловероятно, что это каким-то боком имеет отношение к VFP OLE DB Provider. а жаль.

Исправлено: MichaelD, 07.02.06 13:34

Не корректно отображается Русский текст в CMD? Решение есть!

Как корректно отобразить Русский текст в CMD. Проблемы с кодировкой могут возникнуть, например, при выполнении Bat файла, когда нужно вывести в консоль русский текст и при других обстоятельствах, о которых речь пойдёт далее.

Рассмотрим пример: когда нужно вывести в консоль Русский текст, скажем «Примет мир». Для этого создадим Bat файл с именем «1.bat». Используйте для этого обычный Блокнот Windows (Notepad.exe) Запишем в него следующие строки!

Для тех, кто не понял или не в курсе, строчки «echo.» я добавил специально, что бы были отступы, от строки «Примет мир»

Теперь запускаем файл 1.bat и результат будет такого вида.

Как видим проблема с кодировкой в cmd на лицо. И произошло это по следующей причине.

Стандартный блокнот Windows сохранил Bat файл в кодировке «1251» а консоль вывела его в кодировки «866». Вот от сюда все проблемы!

Решения проблемы с кодировкой в CMD. 1 Способ.

Для решения проблемы нужно просто использовать текстовой редактор, с помощью которого можно сохранить текст в кодировке «866». Для этих целей прекрасно подходит «Notepad++» (Ссылку для загрузки Вы можете найти в моём Twitter-e).

Скачиваем и устанавливаем на свой компьютер «Notepad++».

После запуска «Notepad++» запишете в документ те же строки, которые мы уже ранние записывали в стандартный блокнот.

Теперь осталось сохранить документ с именем «2.bat» в правильной кодировке. Для этого идём в меню «Кодировки > Кодировки > Кириллица > OEM-866»

и теперь сохраняем файл с именем «2.bat» и запускаем его! Поле запуска результат на лицо.

Как видим, текст на Русском в CMD отобразился, как положено.

Решения проблемы с кодировкой в CMD. 2 Способ.

Теперь рассмотрим ещё одну ситуацию, когда могут возникнуть проблемы с кодировкой в CMD.

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

Задача : Сохранить справку CMD в файл «HelpCMD.txt. Для этого создайте Bat файл и запишите в него следующие строки.

После выполнения Bat файла в корне диска «C:\» появится файл «HelpCMD.txt» и вместо справки получится вот что:

Естественно, такой вариант не кому не понравится и что бы сохранить справку в понятном для человека виде, допишите в Bat файл строку.

Теперь содержимое кода будет такое.

После выполнения «Батника» результат будет такой:

Вот так на много лучше, правда?

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

Дополнительно из комментариев то Garric

Автор очень хорошо описал принцип. ! Но это неудобно.
Нужно бы добавить. Если автор добавит это в статью то это будет Good.
Создаём файл .reg следующего содержания:
——
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.bat\ShellNew]
«FileName»=»BATНастроенная кодировка.bat»
——
Выполняем.
——
Топаем в %SystemRoot%\SHELLNEW
Создаём там файл «BATНастроенная кодировка.bat»
Открываем в Notepad++
Вводим любой текст. (нужно!) Сохраняемся.
Удаляем текст. Меняем кодировку как сказано в статье. Сохраняемся.
———-
Щёлкаем правой кнопкой мыши по Рабочему столу. Нажимаем «Создать» — «Пакетный файл Windows».
Переименовываем. Открываем в Notepad++. Пишем батник.
В дальнейшем при работе с файлом не нажимаем ничего кроме как просто «Сохранить». Никаких «Сохранить как».

Илон Маск рекомендует:  Html элемент верхнего уровня
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL