我有一个可以访问cPanel的托管站点,在那里,我每天都要执行一个PHP脚本。这个脚本将一个MySQL表导出到CSV。然后,我在办公室的Windows上有一个计划好的工作,把这个CSV转到我的本地机器。到目前一切尚好。
但是MySQL表中有混合了英语和希伯来语的数据。通过FileManager of cPanel,我可以正确地看到创建的CSV中的希伯来文,但是在将希伯来文送到本地机器之后,希伯来文是不可读的。
编辑:
在Office-2016打开下载的CSV时,问题仍然存在。当用Notepad++或MS-记事本打开它时,希伯来文看上去没问题。
这意味着文件被正确下载,问题出现在MS中。
问题是,这个CSV将用作Excel宏(XLSM)的输入,该宏在夜间自动运行。我发现,在Excel中,我可以手动将CSV“导入”到工作表中,编码很好,希伯来文也可以。我录制了一个宏,现在VBA做得很好。然后我发现它已经在Opening tsv file via Notepad++ and save it in text format中提到过了
编辑的端
PHP脚本(注意'SET NAMES utf8'):
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
$username = "XXX";$password ="YYY";$dbname = "ZZZ";
try {
$conn = new PDO('mysql:host=localhost;dbname='.$dbname, $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$conn->query('SET NAMES utf8');
$stmt = $conn->prepare("SELECT comp_id, comp_name FROM companies");
$stmt->execute();
$file_export = '/home/darushnisayon/public_html/vehadarta/Exported_tables_from_DB/AA_companies.csv';
$data = fopen($file_export, 'w');
$csv_fields = array();
$csv_fields[] = 'comp_id';
$csv_fields[] = 'comp_name';
fputcsv($data, $csv_fields);
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
fputcsv($data, $row);
}
} catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}
?>我的Windows FTP作业(注意二进制选项):
@Echo Off
Set _FTPServerName=nn.nn.nnn.nnn
Set _UserName=XXX
Set _Password=YYY
Set _LocalFolder=C:\Dropbox\GADI\Vehadarta\Routine_Tasks\T002_Daily_Check_if_Synced
Set _RemoteFolder=public_html/vehadarta/Exported_tables_from_DB/
Set _Filename=AA_companies.csv
Set _ScriptFile=ftp1
:: Create script
>"%_ScriptFile%" Echo verbose
>>"%_ScriptFile%" Echo open %_FTPServerName%
>>"%_ScriptFile%" Echo %_UserName%
>>"%_ScriptFile%" Echo %_Password%
>>"%_ScriptFile%" Echo lcd %_LocalFolder%
>>"%_ScriptFile%" Echo cd %_RemoteFolder%
>>"%_ScriptFile%" Echo prompt
>>"%_ScriptFile%" Echo binary
>>"%_ScriptFile%" Echo get %_Filename%
>>"%_ScriptFile%" Echo quit
:: Run script
ftp -s:"%_ScriptFile%"
Del "%_ScriptFile%"在cPanel中看到的CSV文件:
comp_id,comp_name
1,"קשרי עסקים בע""מ"
2,ASK
3,DCL
4,"אסטרטגיה וליווי עסקי S.M.C"FTP后本地dir上的CSV文件:
comp_id comp_name
1 ׳§׳©׳¨׳™ ׳¢׳¡׳§׳™׳ ׳‘׳¢"׳
2 ASK
3 DCL
4 ׳׳¡׳˜׳¨׳˜׳’׳™׳” ׳•׳׳™׳•׳•׳™ ׳¢׳¡׳§׳™ S.M.C谢谢你的任何想法。
发布于 2019-01-21 12:59:54
正如我在我的编辑中提到的,问题在于MS读取CSV的方式。在记事本中打开文件时,编码是正确的。由于CSV将被复制到am Excel电子表格中,我所要做的就是将CSV‘导入’到Excel中。
感谢Martin,他给了我解决方案的第一个提示。
https://stackoverflow.com/questions/54274576
复制相似问题