我有几年前使用ASP.NET编写的Web应用程序,它将表单数据保存到mdb数据库中,然后在用户选择时将其转换为XLS文件。
我将表单处理代码更改为php,我注意到阿拉伯字符被转换为不同的字符集。
示例:تجربة
将存储为تجربة
使用此online tool在UTF8编码字段中粘贴它时,我可以将其转换回阿拉伯语。
这是代码:
ini_set('default_charset', 'utf-8');
header('Content-Type: text/html;charset=utf-8');
$dbName = "DB\DB.mdb";
if (!file_exists($dbName)) {
die("Could not find database file.");
}
$connection = odbc_connect("Driver={Microsoft Access Driver (*.mdb)};Dbq=$dbName", "", "");
odbc_exec($connection , "SET NAMES 'UTF8'");
odbc_exec($connection , "SET client_encoding='UTF-8'");
$stmt="INSERT INTO arabic_table (val) VALUES('".$_POST["arabicTxT"]."')";
$resultset=odbc_exec($connection,$stmt);
请注意: 我使用记事本将所有文件转换为utf-8。 我在存储它们之前通过'回声'来测试阿拉伯语输入,并且它们处于正确的字符集中。 ASP确实完美地存储了阿拉伯字符。 我的共享主机中没有任何PDO驱动程序。
我已经搜索了几个小时的解决方案,没有运气,有什么想法吗?
提前致谢。
答案 0 :(得分:1)
你的问题源于长期存在的不足之处
odbc_
函数和较新的PDO_ODBC
)在PHP下获得完整Unicode支持的唯一方法是使用COM和ADODB对象(Connection
,Recordset
和Stream
)。这显然要求您的PHP应用程序在Windows服务器上运行。有关详细信息,请参阅我的其他答案here。
答案 1 :(得分:0)
$ encoded = iconv(“CP1257”,“UTF-8”,$ string) 阿拉伯语