【发布时间】:2012-12-11 22:05:05
【问题描述】:
我正在使用 nodejs http.get 方法将数据发布到 php
但是 php 的字符集不是 UTF-8,它是 ISO-8859-9(土耳其语)
所以发布数据没有以正确的方式插入到数据库中,
这是我的节点 js 文件:
var data="ğüşıöç ĞÜŞİÖÇ"
var postdata="isim="+encodeURIComponent(data)+"";
var options2 =
{
host: "localhost",
port: 80,
path: "/bbb.php",
method: 'POST',
headers:{"Host":"localhost","Content-Length": postdata.length,'Content-Type': 'application/x-www-form-urlencoded'}
};
var post_req = http.get(options2, function (res)
{
var responseBody='';
res.on('data', function (d) { responseBody += d; });
res.on('end', function (d)
{
sys.print(responseBody);
});
}).on('error', function (e) {sys.print(e.message);});
post_req.write(postdata);
post_req.end();
这是 php 文件:
<?
header('Content-type: text/html; charset=ISO-8859-9');
$dbbaglanti=mysql_connect("localhost", "root", "");
mysql_select_db("db");
mysql_query("SET NAMES 'latin5'");
$isim = $_POST["isim"];
mysql_query("insert into deneme (isim) values ('".$isim."')");
?>
数据正在像这样插入到数据库中:ÄüÅıöç ÄÃÅİÃÃ
但我知道我是否在 php 中这样做:
$isim = iconv("utf-8","iso-8859-9",$_POST["isim"]);
数据插入没有问题 : ğüşıöç ĞÜŞİÖÇ
那么我怎样才能以正确的方式做到这一点?我用谷歌搜索了很多次,我无法弄清楚我该怎么做。我知道 nodejs 有一些 iconv 扩展,但它们适用于 linux 而不是 windows。 javascript或nodejs(windows)中有没有像iconv这样的方法?或 Windows 的任何扩展?或任何其他建议?
请不要说我把php的charset改成utf-8,我不能编辑php,我以localhost为例。
【问题讨论】:
标签: javascript windows node.js character-encoding iconv