2017-09-05 80 views
-1

我有一個mysql數據庫,它由表jobstepscompany組成。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 companyid 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(idprefecture_idindustry_id) )ENGINE = InnoDB的默認字符集= UTF8 |

UPDATE

當我回顧,並從在線手冊爲主,我選中以下最終答案。

+0

您是否爲數據庫表設置了正確的字符編碼? 'phpmyadmin' >> _your table_ >>操作>>整理 – Aydin4ik

+0

您的數據庫是否使用支持這些日文字符的排序規則? –

+0

我做了這個命令行; 'ALTER DATABASE dbname CHARACTER SET utf8 COLLATE utf8_general_ci;'然後'ALTER TABLE tablename CHARACTER SET utf8 COLLATE utf8_general_ci;' –

回答

0

您可以將字符集設置爲不同以支持日文字符集。字符集影響服務器和客戶端軟件之間的存儲和通信。

使用unicode,你可以這樣做:可以在數據庫級別指定

SET NAMES 'utf8'; 

字符集。 例如

CREATE DATABASE mydb 
    DEFAULT CHARACTER SET utf8 
    DEFAULT COLLATE utf8_general_ci; 

並且還根據表。

CREATE TABLE tbl_name (column_list) 
    [[DEFAULT] CHARACTER SET charset_name] 
    [COLLATE collation_name]] 

ALTER TABLE tbl_name 
    [[DEFAULT] CHARACTER SET charset_name] 
    [COLLATE collation_name] 
0

要保存除英語以外的語言,您的表格應該具有字符集UTF-8。請確保您的表格具有字符集UTF-8。

0

剛剛找到答案,就在這裏;

ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci; 
相關問題