VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

PHP: 把 b7c6b9ab 顯示為中文 "滑鼠"
前往頁面 1, 2  下一頁
 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
foxy



註冊時間: 2007-08-16
文章: 229
來自: 泰國

第 1 樓

發表發表於: 星期一 五月 09, 2022 1:52 pm    文章主題: PHP: 把 b7c6b9ab 顯示為中文 "滑鼠" 引言回覆

諸位帥哥大俠,
小弟需要在 PHP 中從MS SQL Server 的欄位 myName (varbinary(8000)) 儲存的中文 "滑鼠" 查詢出來並顯示在網頁裡面, 查詢指令是 select myName from myData, 然後使用bin2hex($dsc) 得到字串 b7c6b9ab, 請問PHP如何繼續把字串 b7c6b9ab 轉為中文 "滑鼠"?
更新: "滑鼠" 兩字的 hex 是 e6bb91e9bca0, 這個 hex 可以轉換為 "滑鼠" 兩字. 現在的問題是該怎樣才能把 b7c6b9ab 轉換為真正的hex e6bb91e9bca0

謝謝

_________________
進銷存+生產製造+會計+員工薪資+CRM+POS零售+餐廳手機app+電商手機app+電商網站,物流系統. 正/簡體中文,英,日,泰,緬甸文. MS SQL Server + 前台 VFP + PHP 網站 + 手機 App, 都共享 MS SQL Server的資料. www.foxacc.com LINE: mike-lm


foxy 在 星期一 五月 09, 2022 3:57 pm 作了第 1 次修改
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 參觀發表人的個人網站 MSN Messenger
syntech



註冊時間: 2003-05-16
文章: 4211
來自: Taipei,Taiwan

第 2 樓

發表發表於: 星期一 五月 09, 2022 2:01 pm    文章主題: 引言回覆

GOOGLE 說
T-SQL
代碼:

select CONVERT(varchar(max), myName , 0) as cString  from myData


參數 0, 可以換成 1,2
可以去查用法

但cString 是不是 UNICODE 或者是 哪一種 UNICODE 編碼,
那就要自己實驗看看

我看到中國那邊有討論帖

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
foxy



註冊時間: 2007-08-16
文章: 229
來自: 泰國

第 3 樓

發表發表於: 星期一 五月 09, 2022 3:20 pm    文章主題: 引言回覆

syntech 寫到:
GOOGLE 說
T-SQL
代碼:

select CONVERT(varchar(max), myName , 0) as cString  from myData


參數 0, 可以換成 1,2
可以去查用法

但cString 是不是 UNICODE 或者是 哪一種 UNICODE 編碼,
那就要自己實驗看看

我看到中國那邊有討論帖

謝謝您,大哥.
參數1和2 也基本都是 b7c6b9ab. 現在小弟卡在如何把 b7c6b9ab 轉成"滑鼠"兩字.

_________________
進銷存+生產製造+會計+員工薪資+CRM+POS零售+餐廳手機app+電商手機app+電商網站,物流系統. 正/簡體中文,英,日,泰,緬甸文. MS SQL Server + 前台 VFP + PHP 網站 + 手機 App, 都共享 MS SQL Server的資料. www.foxacc.com LINE: mike-lm
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 參觀發表人的個人網站 MSN Messenger
garfield
Site Admin


註冊時間: 2003-01-30
文章: 2157


第 4 樓

發表發表於: 星期一 五月 09, 2022 3:48 pm    文章主題: 引言回覆

mstr ='b7c6b9ab' &&--big5碼 滑鼠
? mstr ,'==>' , hex2chr( mstr )

FUNCTION hex2chr
*傳來16進位中文字, 長度限制就不知遞迴有無限制次數, big5可用, unicode應當也行, 只是vfp要特別用unicode物件才能看得到.
LPARAMETERS mstr
RETURN IIF(EMPTY(mstr),'', CHR( EVALUATE('0x'+LEFT(mstr,2)))+hex2chr( SUBSTR(mstr ,3)))

_________________
利用>>搜尋<<的功能會比問的還要快得到答案.
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
foxy



註冊時間: 2007-08-16
文章: 229
來自: 泰國

第 5 樓

發表發表於: 星期一 五月 09, 2022 3:51 pm    文章主題: 引言回覆

garfield 寫到:
mstr ='b7c6b9ab' &&--big5碼 滑鼠
? mstr ,'==>' , hex2chr( mstr )

FUNCTION hex2chr
*傳來16進位中文字, 不限長度吧?, big5可用, unicode應當也行, 只是vfp要特別用unicode物件才能看得到.
LPARAMETERS mstr
RETURN IIF(EMPTY(mstr),'', CHR( EVALUATE('0x'+LEFT(mstr,2)))+hex2chr( SUBSTR(mstr ,3)))

謝謝您,貓大俠
小弟是要在 php 顯示中文

_________________
進銷存+生產製造+會計+員工薪資+CRM+POS零售+餐廳手機app+電商手機app+電商網站,物流系統. 正/簡體中文,英,日,泰,緬甸文. MS SQL Server + 前台 VFP + PHP 網站 + 手機 App, 都共享 MS SQL Server的資料. www.foxacc.com LINE: mike-lm
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 參觀發表人的個人網站 MSN Messenger
syntech



註冊時間: 2003-05-16
文章: 4211
來自: Taipei,Taiwan

第 6 樓

發表發表於: 星期一 五月 09, 2022 4:04 pm    文章主題: 引言回覆

結果是 "b7c6b9ab" 還是 "0xB7C6B9AB"

由這篇得知:
https://bbs.csdn.net/topics/390324549


如果是"0xB7C6B9AB",
你原始資料應該是 非unicode 的,
轉換如下
代碼:

DECLARE @a VARCHAR(10)='滑鼠'
SELECT CAST(@a AS VARBINARY(100))
SELECT CAST(CAST(@a AS VARBINARY(100)) AS VARCHAR(10))


如果是 "0xD16E209F"
那原始資料是 unicode 的
代碼:

DECLARE @a NVARCHAR(10)='滑鼠'
SELECT CAST(@a AS VARBINARY(100))
SELECT CAST(CAST(@a AS VARBINARY(100)) AS NVARCHAR(10))



所以答案應該是
代碼:

SELECT CAST(myName AS VARCHAR(10)) as cSTRING  from myData



再來是不是轉 utf-8 字串的問題?

"0xE6BB91E9BCA0" 是 "滑鼠"的 utf-8 編碼

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
syntech



註冊時間: 2003-05-16
文章: 4211
來自: Taipei,Taiwan

第 7 樓

發表發表於: 星期一 五月 09, 2022 5:18 pm    文章主題: 引言回覆

再讀一次吧

http://vfp.sunyear.com.tw/viewtopic.php?t=7105&highlight=UNICODE

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
foxy



註冊時間: 2007-08-16
文章: 229
來自: 泰國

第 8 樓

發表發表於: 星期一 五月 09, 2022 6:05 pm    文章主題: 引言回覆

syntech 寫到:
再讀一次吧

http://vfp.sunyear.com.tw/viewtopic.php?t=7105&highlight=UNICODE


多謝老兄指教. 那是在 vfp 裡面轉換中文, 現在小弟不是在vfp 裡面, 而是在 php 網頁裡面顯示中文, 謝謝

_________________
進銷存+生產製造+會計+員工薪資+CRM+POS零售+餐廳手機app+電商手機app+電商網站,物流系統. 正/簡體中文,英,日,泰,緬甸文. MS SQL Server + 前台 VFP + PHP 網站 + 手機 App, 都共享 MS SQL Server的資料. www.foxacc.com LINE: mike-lm
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 參觀發表人的個人網站 MSN Messenger
syntech



註冊時間: 2003-05-16
文章: 4211
來自: Taipei,Taiwan

第 9 樓

發表發表於: 星期一 五月 09, 2022 6:14 pm    文章主題: 引言回覆

原則都是一樣的

從SQL 中抓資料一樣會遇到編碼轉換的問題
NCHAR 與CHAR,
NVARCHAR 與 VARCHAR ,

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
foxy



註冊時間: 2007-08-16
文章: 229
來自: 泰國

第 10 樓

發表發表於: 星期一 五月 09, 2022 6:17 pm    文章主題: 引言回覆

syntech 寫到:
結果是 "b7c6b9ab" 還是 "0xB7C6B9AB"

由這篇得知:
https://bbs.csdn.net/topics/390324549


如果是"0xB7C6B9AB",
你原始資料應該是 非unicode 的,
轉換如下
代碼:

DECLARE @a VARCHAR(10)='滑鼠'
SELECT CAST(@a AS VARBINARY(100))
SELECT CAST(CAST(@a AS VARBINARY(100)) AS VARCHAR(10))


如果是 "0xD16E209F"
那原始資料是 unicode 的
代碼:

DECLARE @a NVARCHAR(10)='滑鼠'
SELECT CAST(@a AS VARBINARY(100))
SELECT CAST(CAST(@a AS VARBINARY(100)) AS NVARCHAR(10))



所以答案應該是
代碼:

SELECT CAST(myName AS VARCHAR(10)) as cSTRING  from myData



再來是不是轉 utf-8 字串的問題?

"0xE6BB91E9BCA0" 是 "滑鼠"的 utf-8 編碼


MS SQL Server 的原始資料是 0xB7C6B9AB, 資料類型是 varbinary(8000),
現在需要在 PHP 查詢並顯示在網頁, 所以需要把 0xB7C6B9AB 轉換為 E6BB91E9BCA0
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 參觀發表人的個人網站 MSN Messenger
syntech



註冊時間: 2003-05-16
文章: 4211
來自: Taipei,Taiwan

第 11 樓

發表發表於: 星期一 五月 09, 2022 8:05 pm    文章主題: 引言回覆

用 PDO 連接 MS SQL 嗎?

但我覺得應該答案都有了

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
foxy



註冊時間: 2007-08-16
文章: 229
來自: 泰國

第 12 樓

發表發表於: 星期四 五月 19, 2022 9:49 am    文章主題: 引言回覆

syntech 寫到:
用 PDO 連接 MS SQL 嗎?

但我覺得應該答案都有了

是的, PHP 用 PDO 連接 MS SQL.
在php中已經可以得到 b7c6b9ab, 但是還不能把 b7c6b9ab 轉換為真正的hex e6bb91e9bca0, e6bb91e9bca0 可以顯示為中文 "滑鼠".
如果能把 b7c6b9ab 轉換為真正的hex e6bb91e9bca0, 就成功了. 請指點一二, 開導我這個笨人
謝謝

_________________
進銷存+生產製造+會計+員工薪資+CRM+POS零售+餐廳手機app+電商手機app+電商網站,物流系統. 正/簡體中文,英,日,泰,緬甸文. MS SQL Server + 前台 VFP + PHP 網站 + 手機 App, 都共享 MS SQL Server的資料. www.foxacc.com LINE: mike-lm
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 參觀發表人的個人網站 MSN Messenger
syntech



註冊時間: 2003-05-16
文章: 4211
來自: Taipei,Taiwan

第 13 樓

發表發表於: 星期四 五月 19, 2022 9:39 pm    文章主題: 引言回覆

我覺得上面就通通都有了.
轉回非UNICODE 字串 : CAST( description AS VARCHAR(10))
6樓都測給你看了

為什麼第7樓要再提醒你一次,
因為你又踏到同一個錯誤
css 兄說的
----
你似乎不太理解Unicode、UTF-8和ANSI的內在關係。
而且我也不知道,你拿Unicode和UTF-8的二進制編碼來作什麼。
這東西三言兩語實在解釋不清楚。
----
這次一樣選擇硬幹.

至於 SQL SERVER 的定序會不會影響,
那你要自己測試

代碼:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-tw" lang="zh-tw">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />   
    <title>SQL SERVER 2008 R2 TEST </title>
</head>
<body>
<?php
try
{
    $conn = new PDO( "sqlsrv:Server=127.0.0.1 ; Database = MMS03 ", "USER", "PASSWORD");
}
catch (PDOException $e)
{
    die( print_r( $e->getMessage() ) );
}
       $SQL = "select description,CAST( description  AS VARCHAR(10)) as cdescription  from table_1  " ;
      $result = $conn->query($SQL) ;
      print "<table border=1>";
      foreach($result->fetchAll(PDO::FETCH_BOTH) as $row)
      {
         print "<tr>";
         print "<td>description</td>";
         print "<td>CAST( description  AS VARCHAR(10))</td>";
         print "</tr>";
         print "<tr>";
         print "<td>".$row['description']."</td>";
         print "<td>".$row['cdescription']."</td>";
         print "</tr>";
     }   
      print "</table>";
      $conn=null;
?>
</body>
</html>

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
foxy



註冊時間: 2007-08-16
文章: 229
來自: 泰國

第 14 樓

發表發表於: 星期四 五月 26, 2022 1:30 pm    文章主題: 引言回覆

syntech 寫到:
我覺得上面就通通都有了.
轉回非UNICODE 字串 : CAST( description AS VARCHAR(10))
6樓都測給你看了

為什麼第7樓要再提醒你一次,
因為你又踏到同一個錯誤
css 兄說的
----
你似乎不太理解Unicode、UTF-8和ANSI的內在關係。
而且我也不知道,你拿Unicode和UTF-8的二進制編碼來作什麼。
這東西三言兩語實在解釋不清楚。
----
這次一樣選擇硬幹.

至於 SQL SERVER 的定序會不會影響,
那你要自己測試

代碼:


謝謝老兄指點. 小弟電腦的控制台的地區設定的 language for non-unicode programs 是 Thai, 不是中文,所以查詢得到的中文是不一樣的, 不是真正的 滑鼠 兩字, 而是近乎亂碼的沒有實際意義的4个泰文字母: ทฦนซ
所以需要把 b7c6b9ab 進一步轉換為真正的hex e6bb91e9bca0, 就可以在PHP 顯示真正的中文 滑鼠 兩字.

_________________
進銷存+生產製造+會計+員工薪資+CRM+POS零售+餐廳手機app+電商手機app+電商網站,物流系統. 正/簡體中文,英,日,泰,緬甸文. MS SQL Server + 前台 VFP + PHP 網站 + 手機 App, 都共享 MS SQL Server的資料. www.foxacc.com LINE: mike-lm
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 參觀發表人的個人網站 MSN Messenger
syntech



註冊時間: 2003-05-16
文章: 4211
來自: Taipei,Taiwan

第 15 樓

發表發表於: 星期四 五月 26, 2022 5:54 pm    文章主題: 引言回覆

這個問題就複雜了,
我後來有懷疑你的環境會很麻煩

如果你確定你的資料一定是BIG5的話,
唯一的方式就是由PHP的其他函式處理由BIG5轉UTF8,
根據這篇的提示:
https://noter.tw/109/php%EF%BC%9Autf-8-%E8%B7%9F-big5-%E7%9A%84%E7%B3%BE%E7%B5%90/

https://vector.cool/php-big5%E8%BD%89utf8%E4%B8%8D%E8%A6%81%E7%94%A8iconv%EF%BC%8Ciconv%E9%80%99%E5%80%8B%E5%87%BD%E6%95%B8%EF%BC%8C%E6%98%AF%E5%BE%88%E4%B8%8D%E8%B2%A0%E8%B2%AC%E4%BB%BB%E7%9A%84%EF%BC%8C%E6%94%B9/


把上面的
代碼:

         print "<td>".$row['description']."</td>";

變成
代碼:

         print "<td>".rawurlencode(mb_convert_encoding($row['description'], "utf-8", "big5"))."</td>";


代碼:

         print "<td>".mb_convert_encoding($row['description'], "utf-8", "big5")."</td>";



看看這樣是不是有正確結果

至於到底是用description 還是用 "C"description 去轉,
還是該用其他去轉
我沒辦法測試

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
前往頁面 1, 2  下一頁
1頁(共2頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作