【问题标题】:Polish characters in php mysql web appphp mysql Web应用程序中的波兰语字符
【发布时间】:2011-12-19 15:57:06
【问题描述】:

我的 php / mysql 应用程序正在尝试将以下内容插入 varchar 字段:

l

..但是我在表中的数据存储为:

ł

这是我必须在 php 或 mysql 中处理的事情吗?

非常感谢任何建议。

谢谢保罗

更多信息 - 数据是用户输入,输入到文本框中,然后将其值插入 mysql。

更新:代码

   function addNewCustomer($data, $aid){
      $now = date('Y-m-d H:i:s');

        $row = mysql_fetch_array(mysql_query("SELECT MAX(CustomerID) FROM tbl001_Customer"));

      $query = "INSERT INTO tbl001_Customer
                (CustomerID,CustomerName,Country,Address1,Address2,Address3,Address4,Postcode,PhoneNumber)
                VALUES ('".str_pad($row[0]+1,5,'0',STR_PAD_LEFT)."','{$data['quote_customer_name']}','{$data['quotecountry']}',
                        '{$data['quote_address1']}','{$data['quote_address2']}','{$data['quote_town_city']}',
                        '{$data['quote_country']}','{$data['quote_postcode']}','{$data['quote_primary_phoneno']}')";
        if (!mysql_query($query)) {
            $isError = true;
            echo mysql_error();
        }

【问题讨论】:

  • 数据从何而来?在我看来,好像它是在那里编码的。
  • 这里似乎已经调用了 htmlentities()。你有一些代码吗? Mysql 不会像这样转换它。如果要存储波兰字符而不进行编码等,则需要检查mysql中表的字符集。
  • 如果我们没有看到一些代码,我们就看不到编码的来源。但是,将其转换为 HTML 实体并不是一个坏主意,因为它总是会正确保存,并且可以在输出时直接使用。
  • CustomerID 创建真是太棒了。我只能这么说,因为代码中没有与编码问题相关的内容。
  • 我遇到问题的字段是在插入“CustomerName”时。

标签: php mysql character-encoding special-characters


【解决方案1】:

这是你不应该在 php 中处理的事情。
您在某处调用htmlentities() 函数,这绝对是无用的。

所以,只需摆脱这个函数调用,让您的数据保持不变。

对于针对 XSS 注入过滤用户输入,您必须使用 htmlspecialchars() 函数。

【讨论】:

  • 嘿,我刚刚在我的项目中搜索了“htmlentities()”,但没有得到任何结果,因此我没有使用它。
  • 这很奇怪。尝试调试一下。表单和数据库之间有一些代码,你知道的。只需尝试在几个地方打印出您的数据,并尝试找出更改的地方。
【解决方案2】:

在插入数据库之前使用html_encode(),在从数据库中选择数据后使用html_decode()。

【讨论】:

  • 将 html_encode() 保存 "ł" 而不是 "& #322;"进入数据库?
  • 是的,只是不在那个确切的符号中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-14
  • 2013-10-10
  • 2011-03-31
  • 1970-01-01
  • 1970-01-01
  • 2017-06-09
  • 1970-01-01
相关资源
最近更新 更多