我有一個mysql數據庫,它由表job
,steps
和company
組成。mysql數據庫顯示問號而不是日文文本
公司表:
+--------------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------------+--------------+------+-----+---------+-------+
| id | varchar(45) | NO | PRI | NULL | |
| prefecture_id | varchar(2) | NO | PRI | NULL | |
| industry_id | varchar(2) | NO | PRI | NULL | |
| offset | int(11) | YES | | NULL | |
| pid | varchar(255) | YES | | NULL | |
| name | varchar(255) | YES | | NULL | |
| email | varchar(255) | YES | | NULL | |
| tel | varchar(50) | YES | | NULL | |
| fax | varchar(50) | YES | | NULL | |
| address | varchar(255) | YES | | NULL | |
| address_coordinate | varchar(255) | YES | | NULL | |
| url | varchar(511) | YES | | NULL | |
| image_url | varchar(511) | YES | | NULL | |
| flexible_1 | varchar(511) | YES | | NULL | |
| flexible_2 | varchar(511) | YES | | NULL | |
| flexible_3 | varchar(511) | YES | | NULL | |
| flexible_4 | varchar(511) | YES | | NULL | |
| flexible_5 | varchar(511) | YES | | NULL | |
| flexible_6 | varchar(511) | YES | | NULL | |
| flexible_7 | varchar(511) | YES | | NULL | |
| flexible_8 | varchar(511) | YES | | NULL | |
| flexible_9 | varchar(511) | YES | | NULL | |
| flexible_10 | varchar(511) | YES | | NULL | |
| sequence | varchar(511) | YES | | NULL | |
| del_flg | char(1) | YES | | NULL | |
| create_date | datetime | YES | | NULL | |
| create_user | varchar(255) | YES | | NULL | |
| update_date | datetime | YES | | NULL | |
| update_user | varchar(255) | YES | | NULL | |
+--------------------+--------------+------+-----+---------+-------+
我試圖挽救它由來自該代碼日語文本數據;
public function getDetail($prefectureId,$pid,$offset,$industryId,$companyId,$entryName,$priority,$searchNum)
{
$result = $this->itpApi->getCompany($prefectureId,$pid,$offset,$industryId,$companyId,$entryName,$priority,$searchNum);
$itpCompanyDetail = $this->itpApi->getReturnArray();
$this->db->insert('company',$itpCompanyDetail);
}
這是我獲取數據的代碼;
protected function execApihtmlParser($companyId,$opt,$prefectureId,$pid,$offset,$industryId,$slp=1) {
$curl = curl_init();
sleep($slp);
curl_setopt_array($curl, $opt);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
$this->errMsg = "cURL Error #:" . $err;
return false;
} else {
$response = mb_convert_encoding($response, 'UTF8', 'ASCII,JIS,UTF-8,EUC-JP,SJIS-WIN');
$xml = simplexml_load_string($response);
$html = new simple_html_dom();
$html->load($xml->retdata);
$item = array();
foreach($html->find('body') as $home) {
//populate all items
$item['id'] = $companyId;
$item['prefecture_id'] = $prefectureId;
$item['industry_id'] = $industryId;
$item['offset'] = $offset;
$item['pid'] = $pid;
$item['name'] = str_replace("\r\n",'',trim($home->find('div[id="home"] div[id="topinfo"] h1[id="basetop"]', 0)->plaintext));
$item['email'] = preg_replace("/\s+/u",'',trim($home->find('div[id="home"] div[id="mainblock"] div[class="txtblock"]', 8)->plaintext));
$item['tel'] = preg_replace("/\s+/u",'',trim($home->find('div[id="home"] div[id="topinfo"] p', 2)->plaintext));
$item['fax'] = preg_replace("/\s+/u",'',trim($home->find('div[id="home"] div[id="mainblock"] div[class="txtblock"] p', 3)->plaintext));
$item['address'] = str_replace("\r\n",'',trim($home->find('div[id="home"] div[id="mainblock"] div[class="txtblock"] p', 4)->plaintext));
$item['address_coordinate'] = str_replace("\r\n",'',trim($home->find('div[id="home"] div[id="mainblock"] div[class="txtblock"] p', 4)->plaintext));
$item['url'] = preg_replace("/\s+/u",'',trim($home->find('div[id="mainblock"] div[class="txtblock"]', 7)->plaintext));
$item['image_url'] = str_replace("\r\n",'',trim($home->find('div[id="home"] div[id="shopintro"] p img', 0)->src));
$item['flexible_1'] = preg_replace("/\s+/u",'',trim($home->find('div[id="home"] div[id="mainblock"] div[class="txtblock"] p', 1)->plaintext));
$item['flexible_2'] = preg_replace("/\s+/u",'',trim($home->find('div[id="home"] div[id="mainblock"] div[class="txtblock"] p', 5)->plaintext));
$item['flexible_3'] = preg_replace("/\s+/u",'',trim($home->find('div[id="home"] div[id="mainblock"] div[class="txtblock"] p', 6)->plaintext));
$item['flexible_4'] = preg_replace("/\s+/u",'',trim($home->find('div[id="home"] div[id="mainblock"] div[class="txtblock"]', 11)->plaintext));
$item['flexible_5'] = preg_replace("/\s+/u",'',trim($home->find('div[id="category"] div[id="mainblock"] div[class="txtblock"]', 0)->plaintext));
$item['flexible_6'] = preg_replace("/\s+/u",'',trim($home->find('div[id="category"] div[id="mainblock"] div[class="txtblock"]', 1)->plaintext));
$item['flexible_7'] = preg_replace("/\s+/u",'',trim($home->find('div[id="category"] div[id="mainblock"] div[class="txtblock"]', 2)->plaintext));
$item['flexible_8'] = preg_replace("/\s+/u",'',trim($home->find('div[id="category"] div[id="mainblock"] div[class="txtblock"]', 3)->plaintext));
$item['flexible_9'] = preg_replace("/\s+/u",'',trim($home->find('div[id="category"] div[id="mainblock"] div[class="txtblock"]', 4)->plaintext));
$item['flexible_10'] = preg_replace("/\s+/u",'',trim($home->find('div[id="category"] div[id="mainblock"] div[class="txtblock"] p', 5)->plaintext));
}
$items = array();
$items = $item;
// When parsing fails, processing ends
if ($items === NULL) {
$this->errMsg = "Parse error: syntax error.";
return false;
}
$this->returnArray = $items;
return true;
}
}
我檢查數據庫表company
後,它有 '??????'插入的問號。喜歡這個;
| KN0100060500041981 | 01 | 1 | 400 | 11178 | ??????? | | 011-512-5351 | 064-0807??????????????????? | ????? | ????? | ?????????????? | | ???????? | ?????? | ????? | ??????????????? | ???????? | ??????? | ???????? | ??????????? | ??????? | ??????? | NULL | NULL | NULL | NULL | NULL | NULL |
注: 我剛剛發現這一點。
我通過命令行檢查了數據庫設置;使用SHOW CREATE TABLE company;
這是結果;
|公司| CREATE TABLE company
( id
VARCHAR(45)字符集處理latin1 NOT NULL, prefecture_id
VARCHAR(2)字符集處理latin1 NOT NULL, industry_id
VARCHAR(2)字符集處理latin1 NOT NULL, offset
INT(11)DEFAULT NULL, pid
VARCHAR(255)字符集處理latin1 DEFAULT NULL, name
VARCHAR(255)字符集處理latin1 DEFAULT NULL, email
VARCHAR(255)字符集處理latin1 DEFAULT NULL, tel
VARCHAR(50)字符集處理latin1 DEFAULT NULL, fax
VARCHAR (50)字符集latin1 DEFAULT NULL, address
VARCHAR(255)字符集處理latin1 DEFAULT NULL, address_coordinate
VARCHAR(255)字符集處理latin1 DEFAULT NULL, url
VARCHAR(511)字符集處理latin1 DEFAULT NULL, image_url
VARCHAR(511)字符集處理latin1 DEFAULT NULL, flexible_1
VARCHAR(511)字符集的latin1 DEFAULT NULL, flexible_2
VARCHAR(511)字符集處理latin1 DEFAULT NULL, flexible_3
VARCHAR(511)字符集處理latin1 DEFAULT NULL, flexible_4
VARCHAR(511)字符集處理latin1 DEFAULT NULL, flexible_5
VARCHAR( 511)字符集latin1 DEFAULT NULL, flexible_6
VARCHAR(511)字符集處理latin1 DEFAULT NULL, flexible_7
VARCHAR(511)字符集處理latin1 DEFAULT NULL, flexible_8
VARCHAR(511)字符集處理latin1 DEFAULT NULL, flexible_9
VARCHAR(511)字符集處理latin1 DEFAULT NULL, flexible_10
VARCHAR (511)字符集處理latin1 DEFAULT NULL, sequence
VARCHAR(511)字符集處理latin1 DEFAULT NULL, del_flg
炭(1)字符集處理latin1 DEFAULT NULL, create_date
日期時間DEFAULT NULL, create_user
VARCHAR(255)字符集處理latin1 DEFAULT NULL , update_date
datetime DEFAULT NULL, update_user
VARCHAR(255)字符集的latin1 DEFAULT NULL, PRIMARY KEY(id
,prefecture_id
,industry_id
) )ENGINE = InnoDB的默認字符集= UTF8 |
UPDATE
當我回顧,並從在線手冊爲主,我選中以下最終答案。
您是否爲數據庫表設置了正確的字符編碼? 'phpmyadmin' >> _your table_ >>操作>>整理 – Aydin4ik
您的數據庫是否使用支持這些日文字符的排序規則? –
我做了這個命令行; 'ALTER DATABASE dbname CHARACTER SET utf8 COLLATE utf8_general_ci;'然後'ALTER TABLE tablename CHARACTER SET utf8 COLLATE utf8_general_ci;' –