gpt4 book ai didi

php - HTTP Post 将 € 转换为 ?象征

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:18:20 26 4
gpt4 key购买 nike

我的 Android 应用程序通过 HTTP Post 与 PHP 服务器通信。我将以下参数添加到 HTTP 请求中:

   nameValuePairs.add(new BasicNameValuePair("text", message));

message 是一个字符串,包含符号 €

在服务器上 PHP 正在运行并获取请求。不幸的是,€ 符号自动转换为 ?象征。所有其他符号都像 "ä, ü, $, ß

在 Android 上我没有设置编码:

  HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://server.com/test.php");
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();

在 PHP 站点上,我也没有指定任何内容。这里的代码:

<?php

mysql_connect("blablaost.com", "blabla", "blabla") or die(mysql_error());
mysql_select_db("asfd") or die(mysql_error());
$mysqldate = gmdate( 'Y-m-d H:i:s');

$language = (int) $_REQUEST['language'];

mysql_query("blabla ... .$_REQUEST['text']. ")
or die(mysql_error());

mysql_close();

?>

$_REQUEST['text'] 包含 € 并且它给了我一个 ?

最佳答案

UrlEncodedFormEntity的第二个构造参数是传输编码。替换为:

httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, "UTF-8"));

另外,确保显示该值的网页向浏览器报告一个字符集并符合该字符集。要向浏览器报告字符集,请使用

header("Content-Type: text/html;charset=UTF-8", true);

在 PHP 中,或者

<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>

HTML 下的元素 <head> .如果两者都提供,则前者胜过后者。

PHP 文件的实际编码(即其中非 ASCII 字符的编码)必须与 PHP 文件声称的 Content-Type 相匹配。根据您的 PHP 编辑器,可能有不同的方式来设置文件的编码。例如,在 Visual Studio 中,有一个“使用编码保存”命令。

编辑回复:不相关的问题:

要删除 PHP 魔术引号,我使用以下函数:

function deq($s) //Stands for "dequote"
{
if($s == null)
return null;
return
get_magic_quotes_gpc() ?
stripslashes($s) : $s;
}

然后我在适当的地方使用 deq($_POST["xxx"]) 而不是 $_POST["xxx"]。由于服务器设置可能会更改(并且如果您迁移,服务器本身可能会更改),因此 dequote 函数必须考虑设置的当前值。

关于php - HTTP Post 将 € 转换为 ?象征,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8720887/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com