Я беру XML-файл и читаю его в разные строки перед записью в базу данных, однако у меня возникают трудности с немецкими символами.utf8_encode или decode не делает то, что я ожидаю
Файл XML начинается
<?xml version="1.0" encoding="UTF-8"?>
Тогда пример того, где я с проблемами эта часть
<name><![CDATA[PONS Großwörterbuch Deutsch als Fremdsprache Android]]></name>
Мой PHP имеет этот соответствующий раздел
$dom = new DOMDocument();
$domNode = $xmlReader->expand();
$element = $dom->appendChild($domNode);
$domString = utf8_encode($dom->saveXML($element));
$product = new SimpleXMLElement($domString);
//read in data
$arr = $product->attributes();
$link_ident = $arr["id"];
$link_id = $platform . "" . $link_ident;
$link_name = $product->name;
Так $ link_name становится PONS GroÃwörterbuch Deutsch als Fremdsprache Android
я тогда сделал
$link_name = utf8_decode($link_name);
Который, когда я повторил обратно в терминал работал отлично
PONS GroÃwörterbuch Deutsch als Fremdsprache Android as is now
PONS Großwörterbuch Deutsch als Fremdsprache Android after utf8decode
Однако, когда это написано в моей базе данных она выглядит как:
PONS Kompaktwörterbuch Deutsch-Englisch (Android)
Сопоставление для link_name в MysQL - utf8_general_ci
Как я должен делать это, чтобы правильно его записать в мою базу данных?
Это код, который я использую для записи в базу данных
$link_name = utf8_decode($link_name);
$link_id = mysql_real_escape_string($link_id);
$link_name = mysql_real_escape_string($link_name);
$description = mysql_real_escape_string($description);
$metadesc = mysql_real_escape_string($metadesc);
$link_created = mysql_real_escape_string($link_created);
$link_modified = mysql_real_escape_string($link_modified);
$website = mysql_real_escape_string($website);
$cost = mysql_real_escape_string($cost);
$image_name = mysql_real_escape_string($image_name);
$query = "REPLACE into jos_mt_links
(link_id, link_name, alias, link_desc, user_id, link_published,link_approved, metadesc, link_created, link_modified, website, price)
VALUES ('$link_id','$link_name','$link_name','$description','63','1','1','$metadesc','$link_created','$link_modified','$website','$cost')";
echo $link_name . " has been inserted ";
и когда я запускаю его из оболочки я вижу
PONS Kompaktwörterbuch Deutsch-Englisch (Android) has been inserted
спасибо bob, поэтому я изменил строку, которая сделала utf8_encode только $ domString = $ dom-> saveXML ($ element); и удалил строку utf8_decode и добавил mysql_Set_charset, и он сработал :) – kitenski