Php 如何在mysql和filemaker之间获得正确的字符编码

Php 如何在mysql和filemaker之间获得正确的字符编码,php,character-encoding,filemaker,Php,Character Encoding,Filemaker,我不确定这是php、filemaker、mysql还是odbc驱动程序问题 出于安全原因,我当前的php webform的输入字段将特殊字符转换为十六进制代码(例如:#变为';),此十六进制代码保存在数据库中,并在Filemaker11中显示为十六进制代码。这不是我想要的。 如何确保特殊字符按其应有的方式显示 反过来(从filemaker到db),插入特殊字符时不会进行转换 我如何确保一切都是一致的 亲切问候,, 杰罗恩这个:&39编码类型不是由浏览器自动完成的。有东西在做这件事。通常,您

我不确定这是php、filemaker、mysql还是odbc驱动程序问题

出于安全原因,我当前的php webform的输入字段将特殊字符转换为十六进制代码(例如:#变为
';
),此十六进制代码保存在数据库中,并在Filemaker11中显示为十六进制代码。这不是我想要的。 如何确保特殊字符按其应有的方式显示

反过来(从filemaker到db),插入特殊字符时不会进行转换

我如何确保一切都是一致的

亲切问候,, 杰罗恩

这个:
&39编码类型不是由浏览器自动完成的。有东西在做这件事。通常,您只在输出时执行此操作,而不在输入时执行此操作


您可以使用
html\u entity\u decode()
将其撤消。但我强烈建议您首先弄清楚为什么会发生这种情况。

FileMaker只是显示存储在MySQL中的数据。如果在PhpMyAdmin之类的工具中调出DB,您应该会看到varchar也包含编码。因为FMP只是把它看作一个文本字段,所以它显示了存储的编码。如果您想在FMP中解码,可以显示varchar的calc字段,该字段具有一个自定义函数来解码文本。(但这不允许更新数据。)您还可以在记录加载时尝试触发器对字段中的数据进行解码,以便正确查看/编辑。

解决了这个问题!看来我不得不在我的PHP脚本中添加一行额外的代码

在建立连接之后,php需要告诉mysql需要什么样的编码。这可以通过以下行完成:

$dbh->query("SET NAMES 'utf8'");

谢谢大家的努力

“出于安全原因”是什么意思?进行这种转换无助于安全性。到底是谁或什么在做转换?哦,你是说百分比编码?就像一个空间变成了%20?PHP会自动对它们进行解码,尽管您也可以手动进行解码。它们不是为了安全而被转换的,它们被转换是因为它们不能放在url中。我认为您需要向我们提供更多的细节,例如输出的样子、源代码等等。像“,“#”这样的字符被转换为十六进制。我以为这和安全有关。用于插入DP的筛选变量为:$insert_voornaam=filter_变量($_POST['voornaam'],filter_SANITIZE_字符串);之后,将准备插入:$stmt->bindParam(':voornaam',$insert_voornaam,PDO::PARAM_STR);并执行:$stmt->execute();没错,编码发生在输出上。问题是Filemaker不会解码它,因此它将显示为
'。我不明白-filemaker正在读取html?有些东西怎么能读html而不支持实体呢?Filemaker不读html。它只显示DB的VARCHAR字段中的字符,不进行解码。当我说输出时,我指的是输出到浏览器,而不是DB。在将字符发送到DB之前,不应对其进行编码。编码是否发生在var筛选上:??过滤器\u清理\u字符串请参阅: