За последние 24 часа нас посетили 17552 программиста и 1706 роботов. Сейчас ищут 1789 программистов ...

Проблема с кодировкой БД latin1

Тема в разделе "MSSQL", создана пользователем admyx, 2 июн 2010.

  1. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    Всем доброго вечера...

    Проблема, вернее, не с кодировкой, а у меня в голове, судя по всему...
    Имеется БД в кодировке SQL_Latin1_General_CP1_CI_AS.
    Имеется cakePHP с кодировкой windows-1251

    Скрипты в кодировке windows-1251.

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

    У меня смутное чувство, что я где-то сильно туплю.

    Может быть. кто-нибудь подскажет?
     
  2. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    Как думаете, мб БД переконвертировать в SQL_Latin1_General_CP1251_CI_AS ?
     
  3. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    В MySQL можно указать в какой кодировке работает клиент, подозреваю, что и MSSQL можно.
     
  4. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    А, ну и в Latin1 думаю кириллицу будет проблематично держать
     
  5. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    Я тоже подозреваю, что можно... Знать бы как...
    Заколебался уже маны курить

    Проблематично..
    Однако, в нескольких строках она там есть, что окончательно вводит меня в ступор
     
  6. alexey_baranov

    alexey_baranov Активный пользователь

    С нами с:
    3 фев 2009
    Сообщения:
    647
    Симпатии:
    0
    Адрес:
    Сургут
  7. uri

    uri Активный пользователь

    С нами с:
    3 сен 2009
    Сообщения:
    43
    Симпатии:
    1
    Надо указывать версию SQL Server!

    Для MS SQL Server 2000, насколько я понимаю, кодировка - задается 1 раз при установке сервера и не может меняться впоследствии программно или еще как-то. Помогает переустановка сервера с нужной кодировкой, обычно "Cyrillic_General_CI_AS".

    Если не хочется переустанавливать сервер, помогут пляски с бубном. Попробуйте использовать юникод - поля типа nvarchar и вызовы с клиента с передачей значений вида N'строковое_значение' (символ N обязателен и означает, что используется юникод).

    Однако (! сам не знал !), BOL дает такой совет:

    Т.е. в принципе МОЖНО поменять кодировку на установленном сервере. И для этого надо сделать REBUILD системной базы master и пользовательских баз.

    Опытом поделиться не могу, не делал, но в BOL есть пошаговая инструкция как это сделать. Ищите по теме "How to rebuild the master database (Rebuild Master utility)"

    PS: Не забудьте сообщить и результатах своих изысканий.
     
  8. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    сервер express 2005
     
  9. uri

    uri Активный пользователь

    С нами с:
    3 сен 2009
    Сообщения:
    43
    Симпатии:
    1
    Ну и чтим в BOL для 2005-го следующее:


    Т.е. судя по шагам 1, 2 и 3 предлагается скриптануть метаданные и данные пользовательских баз, потом сделать REBUILD master, потом из скриптов поднять базы. Т.е. то же самое, что и для 2000-го.
     
  10. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    Нельзя трогать сам сервер.
    Там еще и чужие проекты крутятся.

    Скачал EMSDataExport for Sql Server.
    Думаю сдампить бд, перевести в 1251, создать новую бд с SQL_Latin1_General_CP1251_CI_AS, импортировать и посмотреть, что получится...