вставьте китайский символ в MySQL через php и vba

Я пытался до сих пор не могу ввести китайский символ в поле ..

URL выглядит так:
http://xxx.xxx/AddCategory.php?CatID=0001&NameTC= 石油&NameEN = Нефтяные% 20Gases&Random = 1.401764E-02

Это работает для URL, но я использую VBA для запуска URL через php для обновления MySQL, это не работает. так может быть из-за проблемы с кодировкой в ​​VBA или PHP? Пожалуйста, порекомендуйте!

IN VBA, я использую MSXLM2.XMLHTTP

Set oHttp = CreateObject("MSXML2.XMLHTTP")
If Err.Number <> 0 Then
Set oHttp = CreateObject("MSXML.XMLHTTPRequest")
MsgBox "Error 0 has occured while creating a    MSXML.XMLHTTPRequest object"End If

CatID | CatName_TC | CatName_EN

Ожидаемое:

1001 |工業 | промышленные

Результаты:

1001 | [Ничего] | промышленные

Я использую Excel VBA для хранения этих данных в 3 переменных и использую web php с параметром для вставки в мой MySQL. Я не мог вставить китайский символ в базу данных. Я мог бы сделать это для CatID и CatName_EN, но ничего не добавить в поле CatName_TC.

Код VBA:

    Set oHttp = CreateObject("MSXML2.XMLHTTP")
If Err.Number <> 0 Then
Set oHttp = CreateObject("MSXML.XMLHTTPRequest")
MsgBox "Error 0 has occured while creating a MSXML.XMLHTTPRequest object"End If
On Error GoTo 0
If oHttp Is Nothing Then
MsgBox "For some reason I wasn't able to make a MSXML2.XMLHTTP object"Exit Function
End If

'Open the URL in browser object
On Error Resume Next
oHttp.Open "GET", sURL, False
oHttp.Send
oHttp.waitforresponse (10)
GetWebHTML =

oHttp.responseText

PHP-код:

    $mysqli = new mysqli("site", "name", "pass", "db");

$CatID = isset($_GET['CatID']) ? htmlspecialchars($_GET["CatID"]) : NULL;
$NameTC = isset($_GET['NameTC']) ? htmlspecialchars($_GET["NameTC"]) : NULL;
$NameEN = isset($_GET['NameEN']) ? htmlspecialchars($_GET["NameEN"]) : NULL;

$stmt = $mysqli->prepare("INSERT INTO AACategory (AACatID, CatNameTC, CatNameEN) VALUES (?,?,?)");

// TODO check that $stmt creation succeeded

// "s" means the database expects a string
$stmt->bind_param("sss", $CatID, $NameTC, $NameEN);

$stmt->execute();

$stmt->close();

$mysqli->close();

0

Решение

Таблица могла быть создана по умолчанию latin1 кодировка вместо utf8, Хотя невозможно преобразовать существующие значения в столбце CatNameTC в utf8, вы можете изменить таблицу для новых вставок, чтобы использовать кодировку utf8

ALTER TABLE AACategory CONVERT TO CHARACTER SET utf8;
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]