2017-09-30 3 views
0

다소 이상한 문제가 있습니다. 데이터베이스 (설계하지 않았 음)로 작업하고 있습니다.이 데이터베이스는 다국어로, 즉 영어, 스페인어 , 러시아어, 베트남어 등Mysql의 라틴 문자

"ñ", "á", "é", "ë"유형의 문자가있는 문서를 다음과 같이 데이터베이스에 저장했습니다. "& ntilde_ ", 그래서 html에서 이들 문자를 어떻게 보여줄지 알 수 있습니다. 어떤 종류의 변환도 사용하지 않고 이러한 문자를 호출 할 때 PHP 코드에서"ñ "이 나에게 발생합니다 :

utf_decode 및 html_entities_decode를 사용하여 시도했지만 작동하지 않았습니다. 나는 이렇게하려면 "_"제목에서 "Señ_ora"를 제거하는 않는 str_replace를 사용하고 싶었지만 내가 가지고 : 연결하기/연결하는 동안 "괜찮다 &는 ntildeora"

+0

에서 컬럼 필드를 설정하십시오. utf 8 일반적인 ci in collation – iCoders

+0

MYSQL 데이터베이스 UTF8 general-ci를 PHP charset utf8에 삽입하기 전에 당신이 시도한 이유를 추가 할 필요가 없습니다. –

+0

밑줄은 어디서 나왔습니까? 이들은 유효하지 않은 개체입니다. – chris85

답변

1

문자를 볼 수 있습니다 데이터베이스에 다음과 같이 저장되었습니다. "& ntilde_"

이것은 기괴합니다.

먼저 데이터베이스에 실제로 _자를 포함시켜야하며 어떤 종류의 대체 문자가 렌더링되지 않는지 확인하십시오. 데이터를 표시하는 데 사용하는 프로그램에 관계없이 일부 문자 집합 옵션이 잘못 설정되었을 수 있습니다.

비교적 짧은 몇 가지 예를 찾으려면 SELECT field, HEX(field) FROM table WHERE field LIKE '%' ORDER BY CHAR_LENGTH(field) LIMIT 10이라고 말하면됩니다. 그런 다음 헥스 산출물을 모아서 3B (헥스는 ;), 5F (헥스는 _)을 찾습니다. 내 UTF8 설정에 대한 예를 들어

, SELECT HEX('Señora'), HEX('Se&ntilde_ora')이 두 문자열

5365266E74696C64653B6F7261 
        xx 
5365266E74696C64655F6F7261 

이 차이를 볼 수 있습니다?

_ 문자가 데이터에 분명히 포함되어 있다면 사이버 스켈 킹킹이 필요합니다. 이것을 설정 한 사람에게 접근 할 수있어 그것에 관해 물어볼 수 있습니까? 그렇다면 그렇게하십시오. 리버스 엔지니어링 시간을 절약 할 수 있습니다.

도움없이이 문제를 해결해야하는 경우, 당신은이 올바로 문자가 제대로 포맷에 도착해야이

$my_data = str_replace('_',';', $my_data); 

으로 PHP를 사용하여 시도 할 수 있습니다. 이지만 독립형 _ 문자는 ;으로 변경됩니다. 이 문제를 해결하려면 데이터에있는 모든 자격 부여 된 문자의 목록이 필요하며 개별적으로 변경해야합니다.

+0

나는 당신이 나에게 제안한 수표를 만들었지 만, 결국 가장 간단한 해결책은 "_"을 ";"로 대체하는 것이 었습니다. 대단히 감사합니다! – Kokox

+0

안녕하세요, @Kokox. 데이터에 어떤 변화가 있었는지 알아 내면 질문을 수정하거나 의견을 설명해 주시겠습니까? 귀하의 경험은 다른 사람들을 도울 수 있습니다. –

0

내 이해 당으로 당신은 또한이 처리 ca를 mysql은 PHP 코드를 사용합니다.

있는지 데이터를 확인 //이있다 "é", "E", "A", UTF의 *가, 그런 식으로 데이터베이스가 악센트 물건 종류 "N"의

$db = mysql_connect('localhost', 'user', 'pass'); 
    if (!$db) { 
     die('Could not connect: ' . mysql_error()); 
    } 

    mysql_select_db("dbname"); 
    mysql_query("SET NAMES 'utf8'", $db); 
    mysql_query("SET CHARACTER_SET 'utf8'", $db); 
+0

PHP에서는 mysql_ * 인터페이스를 사용하지 않습니다. mysqli_ * 또는'PDO'를 사용하십시오. –