Символы Inserting Unicode с PHP-> ODBC-> MS SQL?

const о семантике программы а не о деталях реализации. Необходимо отметить функцию членства const, когда она не изменяет видимое состояние объекта и должна быть вызываемой на объекте, который является самостоятельно const. В const функция членства на классе X, тип this X const *: указатель на постоянный X объект. Таким образом все членские переменные эффективно const в той функции членства (кроме [1 110]). Если Вы имеете const объект, можно только звонить const функции членства на нем.

можно использовать mutable, чтобы указать, что членская переменная может измениться даже в const функция членства. Это обычно используется для идентификации переменных, используемых для кэширования результатов, или для переменных, которые не влияют на фактическое заметное состояние, такое как взаимные исключения (все еще необходимо заблокировать взаимное исключение в эти const функции членства), или счетчики использования.

class X
{
    int data;
    mutable boost::mutex m;
public:
    void set_data(int i)
    {
        boost::lock_guard lk(m);
        data=i;
    }
    int get_data() const // we want to be able to get the data on a const object
    {
        boost::lock_guard lk(m); // this requires m to be non-const
        return data;
    }
};

при содержании данных указателем, а не непосредственно (включая интеллектуальные указатели такой как [1 116] или boost::shared_ptr) тогда указатель становится const в const функция членства, но не указанный данные, таким образом, можно изменить указанный данные.

Что касается кэширования: в целом компилятор не может сделать этого, потому что состояние могло бы измениться между вызовами (особенно в моем многопоточном примере со взаимным исключением). Однако, если определение встроено тогда, компилятор может вытянуть код в вызов, функционируют и оптимизируют то, что это видит там. Это могло бы привести к функции эффективно только быть названным однажды.

следующая версия Стандарт C++ (C++ 0x) будет иметь новое ключевое слово constexpr. Функции отметили constexpr, возвращают постоянную величину, таким образом, результаты могут кэшироваться. Существуют пределы на то, что можно сделать в такой функции (чтобы компилятор мог проверить этот факт).

5
задан catbelly 5 August 2009 в 03:01
поделиться

3 ответа

Проблема заключалась не в ODBC, а в PHP ... Решением было использование utf8_decode () для строк, возвращаемых из базы данных.

4
ответ дан 14 December 2019 в 19:20
поделиться

Если вы работаете в Windows и используете PHP 5.3, используя PDO_ODBC с собственным клиентом SQL, и ваш вводимый текст - UTF-8, это должно работать автоматически.

1
ответ дан 14 December 2019 в 19:20
поделиться

Я бы здесь действовал осторожно. В прошлом, имея дело с интеграцией SQL Server и PHP, я встречал случаи, когда SQL Server использовал от 3 до 5 раз больше места для хранения, чем фактически необходимо для символов Unicode. В зависимости от того, как вы подключаетесь к базе данных и как кодируются данные. Насколько я понимаю, MSFT работает над новым драйвером (или, возможно, он уже давно отсутствует), который решает проблему и в целом улучшает интеграцию с PHP. С некоторыми из старых стеков вы можете столкнуться с проблемами. Я рекомендую посмотреть размер данных в БД, чтобы убедиться, что соединение не заполняет ваши данные.

Джейкоб

0
ответ дан 14 December 2019 в 19:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: