Я пытался до сих пор не могу ввести китайский символ в поле ..
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();
Таблица могла быть создана по умолчанию latin1
кодировка вместо utf8
, Хотя невозможно преобразовать существующие значения в столбце CatNameTC в utf8, вы можете изменить таблицу для новых вставок, чтобы использовать кодировку utf8
ALTER TABLE AACategory CONVERT TO CHARACTER SET utf8;
Других решений пока нет …