将php插入sql_latin1_general_cp1_ci_as数据库字符集

时间:2018-06-28 17:45:06

标签: php sql-server character-encoding

我有一个使用sql_latin1_general_cp1_ci_as排序规则的sql数据库。
数据库将包含大约3种语言(英语,土耳其语,阿拉伯语)。

在主页上,将字符集设置为utf-8:

header('Content-Type: text/html; charset=UTF-8');
<meta charset="utf-8">

然后在我的php页面中使用以下代码:

$sql_server = "server";
$sql_user = "user";
$sql_password = "password";
$sql_database = "database";
$sql_conn_string = 'Driver={SQL Server};Server='.$sql_server.';Database='.$sql_database.';';
if ($sql_conn = odbc_connect($sql_conn_string, $sql_user, $sql_password)){
    echo 'Connected';
    $name = $_POST['cust_name'];
    if (odbc_exec($sql_conn,"INSERT INTO inv01 (cust) VALUES (N'".$name."')")){
        echo 'is inserted';
    }
    else{
        echo 'is not inserted';
    }
    odbc_close($sql_conn);
}
else{
    echo 'Connection Error';
}

输入英文单词时没有问题
但是当我使用其他语言时,单词会以不清楚的字符插入

我尝试使用iconv,但是它不起作用

$name = iconv("UTF_8","Windows-1252",$name);
//and
$name = iconv("UTF_8","UCS-2LE",$name);

如果没有sql_latin1_general_cp1_ci_as,并且在不更改排序规则的情况下是否存在另一种解决方案,那么我的最佳排序规则是什么?

我希望我的问题不再重复,因为我在这里读了很多问题,但没有找到正确的答案。

谢谢。

1 个答案:

答案 0 :(得分:2)

您可以尝试以下操作:

  • 确保您的“ cust”列为nvarchar()。

  • 以UTF-8编码html和php文件(此步骤我通常使用Notepad ++)。

  • 转换输入数据。

代码(根据您的示例):

16/24/32