【发布时间】:2011-07-20 15:38:08
【问题描述】:
我有一个 PHP 脚本,它通过 Salesforce API 从 Salesforce 获取数据,并使用 file_put_contents 将输出写入文件。数据是韩文字符和英文字符的混合体。
当我在运行 Red Hat Enterprise Linux ES 版本 4 (Nahant Update 8) 和 PHP 5.2.8 的机器 (1) 和运行 PHP 5.3.6 的类似机器 (2) 上运行脚本时,韩语之间的空格字符消失。
例如(用K代表韩文,E代表英文)
EEEEEEEEK KKK KKKK EEE KKKK 显示为 EEEEEEEEKKKKKKKK EEE KKKK
但是,当我在 (3) 使用 PHP 5.3.5 运行 CentOs 或在 (4) 我的本地 Windows 机器上使用 PHP 5.3.6 运行脚本时,文件中的文本是正确的。
谁能提出问题可能是什么?
编辑 - 最初我是通过浏览器访问 php 脚本,但是为了(希望)简化我目前将输出存储在文本文件中并将其下载到我的 Windows 机器的问题。
编辑 - 十六进制版本
原文 - CFD란 무엇입니까?
十六进制从 (1) - 43 46 44 eb 9e 80 eb ac b4 ec 97 87 ec 9e 85 eb 8b 88 ea b9 8c 3f
十六进制从 (3) - 43 46 44 eb 9e 80 20 eb ac b4 ec 97 87 ec 9e 85 eb 8b 88 ea b9 8c 3f
EDIT - 用于选择文本的代码(省略用户、密码、表格、ID 和路径)
<?php
ini_set("soap.wsdl_cache_enabled", "0");
require_once ("../soapclient/SforcePartnerClient.php");
require_once ("../soapclient/SforceHeaderOptions.php");
$partner_wsdl = "../soapclient/new-partner.wsdl.xml";
$client = new SforcePartnerClient();
$client->createConnection($partner_wsdl);
$loginResult = $client->login('--user--', '--pass--');
$query = "Select Name FROM --table-- WHERE Id = '--id--'";
$response = $client->query($query);
echo'<pre>';print_r($response);echo'</pre>';
$queryResult = new QueryResult($response);
foreach ($queryResult->records as $qr) {
$content = $qr->fields->Name;
file_put_contents('--path--',$content);
}
?>
【问题讨论】:
-
您是如何从文件中读取内容的?您是否在每个盒子上使用相同的编辑器?
-
嗨,我在 Windows 上使用记事本从创建文件的框中下载文件后读取文件。
-
尝试使用十六进制编辑器(或其他可以让您查看文件原始字节的程序)打开文件并查看发生了什么变化。
-
我已经从框 1 和框 3 添加了十六进制输出,我能看到的唯一区别是缺少 20。我不明白空间怎么会消失,但其他一切都保持正确。
-
是的,这显然是一个正在消失的空间。确实是一个奇怪的问题,似乎是由软件中的差异(或错误)引起的,很难找到。您可以尝试的其他一些事情是 1. 发布代码,2. 定期打印字符串(例如,在您从 Salesforce 获取它之后以及之后可能发生的任何突变之后)
标签: php whitespace cjk