首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >非英语CSV文件(希伯来语等)

非英语CSV文件(希伯来语等)
EN

Stack Overflow用户
提问于 2019-01-20 07:58:42
回答 1查看 1.3K关注 0票数 1

我有一个可以访问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'):

代码语言:javascript
复制
<?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作业(注意二进制选项):

代码语言:javascript
复制
    @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文件:

代码语言:javascript
复制
comp_id,comp_name
1,"קשרי עסקים בע""מ"
2,ASK
3,DCL
4,"אסטרטגיה וליווי עסקי  S.M.C"

FTP后本地dir上的CSV文件:

代码语言:javascript
复制
comp_id comp_name
1   ׳§׳©׳¨׳™ ׳¢׳¡׳§׳™׳ ׳‘׳¢"׳
2   ASK
3   DCL
4   ׳׳¡׳˜׳¨׳˜׳’׳™׳” ׳•׳׳™׳•׳•׳™ ׳¢׳¡׳§׳™  S.M.C

谢谢你的任何想法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-21 12:59:54

正如我在我的编辑中提到的,问题在于MS读取CSV的方式。在记事本中打开文件时,编码是正确的。由于CSV将被复制到am Excel电子表格中,我所要做的就是将CSV‘导入’到Excel中。

感谢Martin,他给了我解决方案的第一个提示。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54274576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档