Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 编写CSV文件:显示࿽Â࿽;人物_Javascript_Php_Csv_Cordova - Fatal编程技术网

Javascript 编写CSV文件:显示࿽Â࿽;人物

Javascript 编写CSV文件:显示࿽Â࿽;人物,javascript,php,csv,cordova,Javascript,Php,Csv,Cordova,我正在使用phonegap创建一个可以导出csv文件的应用程序。我是通过使用文件编写器()来实现这一点的 问题是,当我使用OpenOffice.org打开导出的.csv文件时,它会显示以下字符:�Â� 在学位符号(°)之前。 详情如下: HTML <select> <option value="&#176;C"> &#176;C </option> <select> PHP while($row = $STH->fe

我正在使用phonegap创建一个可以导出csv文件的应用程序。我是通过使用文件编写器()来实现这一点的

问题是,当我使用OpenOffice.org打开导出的.csv文件时,它会显示以下字符:�Â� 在学位符号(°)之前。 详情如下:

HTML

<select>
    <option value="&#176;C"> &#176;C </option>
<select>
PHP

while($row = $STH->fetch())
    $row['temperature_unit'] = html_entity_decode($row['temperature_unit']);
    $row_set[] = $row;
}

echo json_encode($row_set);
Javascript(缩写)

结果(在openoffice.org应用程序中打开的csv文件)


编辑:将数据保存到数据库的AJAX和PHP代码(缩短)

阿贾克斯

php


这是一个编码问题,您在某个地方将UTF-8(°)写为拉丁语1。数据库中已存在错误的值

将表的列排序规则设置为
utf8\u general\u ci
,不要忘记使用正确的值“C”更新数据库

UPD

  • HTML应使用UTF-8编码:
    
    
  • 在ajax请求中,可能会显式指定
    contentType:“charset=utf-8”
  • 在保存到数据库之前,请尝试退出
    $\u请求['temp\u unit']
    值,查看该值是否已损坏
UPD2


  • 作为一个修补程序,我可以建议调用
    \u REQUEST['temp\u unit']
    ,但这听起来很蹩脚
  • 顺便说一句,问题可能出在。试着去做

这是一个编码问题,您在某个地方将UTF-8(°)写为
LATIN1
。数据库中已存在错误的值。您的数据库列编码是否设置为UTF-8?@mudasobwa该表的排序规则当前设置为“latin1_swedish_ci”,我应该将其设置为什么?我尝试将该列的排序规则更改为您所说的,但它仍然保存“C”1。据我所知,这是一个“静态”值,请使用
phpMySqlAdmin
或类似方法保存。2.是否在将数据保存到数据库时存在问题,请提供用于将值写入数据库的代码。3.您的页面是否设置为UTF-8编码?尝试更改
“°;C”
到explicit
°C
并查看打印出的内容。我不知道为什么,但它仍然保存了“C”。1)HTML页面已经使用utf-8编码。2)我将ajax调用从$.post更改为$.ajax,并添加了contentType:“charset=utf-8”。3)$\u请求['temp\u unit']输出“C”。更正:$\u请求['temp\u unit']输出“C”当在PHP中回响时。我使用了javascript的警报,数据通过ajax来自PHP,这就是为什么它显示为“C”。PHP中出现了什么问题?作为一个修补程序,我可以建议调用
\u请求['temp\u unit]
,但这听起来很蹩脚。您介意检查一下它是否正常工作吗?
while($row = $STH->fetch())
    $row['temperature_unit'] = html_entity_decode($row['temperature_unit']);
    $row_set[] = $row;
}

echo json_encode($row_set);
//data = json_encoded $row_set
var datatoexport = JSON.parse(data)

var content = "Temperature \n";

for(var x in datatoexport) {
    content += datatoexport[x].temperature + " " + datatoexport[x].temperature_unit;
}

//write content to file
writer.write(content);
writer.onwriteend = function(evt) {
    alert("File exported");
};   
Temperature
-----------
36 �Â�°C
assetinfo = {temp:"35",temp_unit:"°C"}

$.post(serverURL + 'API/save.php',
    {
        temperature: assetinfo.temp,
        temp_unit: assetinfo.temp_unit
    },
    function(data) {
        alert("saved");
        }
   });
$temp = $_REQUEST['temperature'];
$temp_unit = $_REQUEST['temp_unit'];

$STH = $DBH->prepare("INSERT INTO bearing_table (temperature, temperature_unit) VALUES (:temp, :temp_unit)");
$STH->bindParam(':temp', $temp);
$STH->bindParam(':temp_unit', $temp_unit);
$STH->execute();