개발! 딱 깔끔하고 센스있게!

PHP FreeTDS 확장을 사용하여 MSSQL 서버에서 UTF-8 문자 세트로 데이터 가져 오기 본문

개발 스크랩 메모/PHP

PHP FreeTDS 확장을 사용하여 MSSQL 서버에서 UTF-8 문자 세트로 데이터 가져 오기

렉사이 2020. 12. 18. 02:38

나는 freetds 확장을 사용할 수 없을 것 같습니다.

인코딩에서 utf -8 msql에서 데이터를 얻습니다.

연결:

ini_set('mssql.charset', 'UTF-8'); $this->_resource = mssql_connect($config['servername'], $config['username'], $config['password']); 

나는 다른 분기를 사용할 능력이 없다.

제가 만들어봤어요 ~/freetds.conf.

[global] client charset = UTF-8 

php 에 인자를 전달하는 것을 시도해봤습니다:

php -d mssql.charset="UTF-8" index.php 

데이터는 여전히 utf -8 형식이 아니다.

PHP - 아잭스

mssql MSSQL Support => enabled Active Persistent Links => 0 Active Links => 0 Library version => FreeTDS Directive => Local Value => Master Value mssql.allow_persistent => On => On mssql.batchsize => 0 => 0 mssql.charset => no value => no value mssql.compatability_mode => Off => Off mssql.connect_timeout => 5 => 5 mssql.datetimeconvert => On => On mssql.max_links => Unlimited => Unlimited mssql.max_persistent => Unlimited => Unlimited 

사상

대답

MSSQL 과 UTF -8 은...가끔나는 어쩔 수 없이 수동적으로 그것을 바꾸었다.

문제는 : mssql 이 실제로는 utf -8을 지지하는 것을 몰랐다는 점이다.

데이터베이스에서 UTF -8 으로 전환:

mb_detect_encoding($value, mb_detect_order(), true) === 'UTF-8' ? $value : mb_convert_encoding($value, 'UTF-8'); 

utf -8에서 데이터베이스 값으로 바꾸기:

mb_convert_encoding($value, 'UCS-2LE', mb_detect_encoding($value, mb_detect_order(), true)); 

다행히도 Doctrine 을 사용하는 것이기 때문에 사용자 정의 Stringtype를 만들어야 합니다.

Comments