问题标签 [mb-convert-encoding]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
577 浏览

php - 使用 mb_convert_encoding 、 mb_detect_encoding 和 UTF-8 编码的 MySql 的安全性

我计划使用下面的代码以安全的方式将记录添加到 MySql 中。我的问题:

  1. 我总是使用管理页面的表格输入我自己的文章。由于我的mysql数据库和表是用UTF-8编码的,整理:utf8_unicode_ci; 并且我所有的网页都是 charset=utf-8 那么我还需要函数中的第一句话吗(句子以 mb_convert_encoding ... 开头)
  2. 2 - ) 网页查看器是否有可能,尽管我的所有编码(web&mysql)aer 设置为 utf-8,但他/她在我的 textarea 中输入的评论没有以 utf-8 编码
  3. 下面的代码需要改进吗?

    function safe_input_into_mysql($safe_str)
    {
    $safe_str = mb_convert_encoding($safe_str, 'UTF-8', mb_detect_encoding($safe_str));
    $safe_str = mysqli_real_escape_string($dbc, $safe_str);
    return $safe_str;
    }

0 投票
1 回答
1206 浏览

php - 为什么我需要 mb_convert_encoding 来显示正确的字符

我的网站有 charset=UTF-8,mysql DATABASE 也设置为 UTF-8 编码。

我的问题是,当我从 mysql 检索文本到网站时,我需要使用 php 函数 mb_convert_encoding(@db_field,'utf-8','iso-8859-1') 正确显示文本。看起来该系统认为 mysql DB 在 iso-8859-1 中。

0 投票
1 回答
1104 浏览

php - Unexpected result from mb_detect_encoding with Windows-1252

I've read Wikipedia's article on Windows-1252 character encoding. For characters whose byte value is < 128, it should be the same as ASCII/UTF-8.

This makes sense:

php -r "var_export(mb_detect_encoding(\"\x92\", 'windows-1252', true));" 'Windows-1252'

A left curly apostrophe is detected properly.

php -r "var_export(mb_detect_encoding(\"a\", 'windows-1252', true));" false

Huh? The letter "a" isn't Windows-1252?

My terminal, where I"m running this, is set to UTF-8. So that should be the same byte sequence as ASCII for the letter 'a'. For the sake of minimizing the variables, if I specify the right Windows-1252 byte sequence:

php -r "var_export(mb_detect_encoding(\"\x61\", 'windows-1252', true));" false

Changing the "strict" parameter (which has pretty useless documentation) does nothing in these cases.

0 投票
1 回答
654 浏览

php - 使用 php 将 CSV 文件转换为 UCS-2LE 编码

我正在创建一个 csv 文件。我需要它采用 UCS-2LE 编码。我尝试了以下方法,但都不起作用:

  • $value = mb_convert_encoding($value,"UCS-2LE");
  • $value= iconv( mb_detect_encoding( $value ), 'UCS-2LE', $value );

在 Notepad++ 中打开文件显示编码为 ANSI。

代码:

0 投票
2 回答
490 浏览

php - 带有 mb_convert_encoding 的 PHP 中 ASCII 编码的 unicode 到 SQL 语句

我正在使用仅由 ASCII 字符组成的文件类型。其他字符被编码。两个字节字符前面\X2\和后面\X0\,四个字节字符使用\X4\and \X0\。我可以很容易地找到这些,但我不知道如何处理它们。

例如,字符ø被指定为\X2\00F8\X0\

我正在寻找的整个字符串是100 mm\X2\00F8\X0\.

我怎样才能得到一个字符串,然后我可以说插入到我的数据库中?

我想我需要使用mb_convert_encoding()

但我不确定我要往返于哪种编码。

有任何想法吗?

简而言之,我有“100 mm\X2\00F8\X0\”,我想将其输出为“100 mmø”

0 投票
0 回答
276 浏览

php - PHP:UTF8_decode 需要过滤 ASCII 值 126-160;建议的解决方案

我以前在这里开始探索这个问题。这是真正的问题和建议的解决方案:

ASCII 字符值在 32 到 255 之间的文件名对 utf8_encode() 造成了问题。具体来说,它不能正确处理 126 到 160 之间的字符值。虽然可以将具有这些字符名称的文件名写入数据库,但将这些文件名传递给 PHP 代码中的函数会产生错误消息,指出无法找到文件等。

我在尝试将带有违规字符的文件名传递给 getimagesize() 时发现了这一点。

utf8_encode 需要一个过滤器来排除 126 和 160 之间的包含值的转换,同时包括所有其他字符(或用户期望的任何字符、字符或字符范围)的转换;我的是用于所述范围,由于提供的原因)。

我设计的解决方案需要下面列出的两个函数,以及它们的应用程序如下:

如果只有 PHP7(编号中跳过了 6,是吗?)会在 utf8_encode() 上包含一个过滤器以排除某些字符值,那么这些都不是必需的。

0 投票
0 回答
429 浏览

php - 如果源 HTML 的编码未知,如何使用 PHP 的 DOMDocument 处理 HTML?

我刚刚遇到用 UTF-8 编码的 HTML 文档在loadHTML().

Stack上有很多这样的QnA:

但是,据我了解,大多数答案都假设源编码UTF-8。所以推荐这样使用mb_convert_encoding()函数:

我想这只有在源文档UTF-8 时才有效。不幸的是,在我的世界里,源文档可以有任何可用的编码:Windows-1251、UTF-8、KOI8-R 等等......

那么对于任何编码处理这个问题的最佳实践是什么?

更新1:只需找到mb_detect_encoding()功能。使用一个来检测编码是一种好习惯吗?以这样的方式:

在几个文件上对此进行了测试:看起来它有效,但我可以确定这适用于所有合理的情况吗?

0 投票
1 回答
944 浏览

php - 从 utf8_general_ci 到 latin1_swedish_ci 的 PHP 转换

我从网站接收大量数据,所有这些字符串值都需要添加到我们的数据库中。

在插入数据库期间 SQL 有时会抛出以下错误:

数据库表实际上设置为使用 Latin1。

用 json_encode() 对我的值进行编码后,我发现了这个错误发生的原因。表示字符串之间的一些特殊字符的 UTF 序列需要转换为它们的实际值:

编码字符串:candidate\u00e2\u0080\u0099s 个人情况

在本例中,序列 \u00e2\u0080\u0099 表示一个 '。

无论只有几个不同的序列,我也知道我想要/需要替换它们的值,但我正在努力转换。

我尝试了几种方法,但都没有成功,

使用 str_replace:

没有改变字符串中的任何内容

使用 mb_functions:

$encodedStr = mb_convert_encoding($string, 'ASCII')

给我留下了一些神秘的东西??而不是 UTF 序列,但它不会引发数据库错误,但它仍然不是我需要的。

使用 preg_replace:

preg_replace('/\\u00e2\\u0080\\u0099/', '\'', $string)


抛出错误:PCRE 在偏移量 1 处不支持 \L、\l、\N{name}、\U 或 \u

我已经尝试了更多选项,但是当我开始强迫这个问题时,我想到了三个选项,我只是无法弄清楚为什么这些功能,特别是 str_replace 不能以预期的方式工作。

0 投票
3 回答
4141 浏览

php - Convert html entities to UTF-8, but keep existing UTF-8

I want to convert html entities to UTF-8, but mb_convert_encoding destroys already UTF-8 encoded characters. Whats the correct way?

0 投票
1 回答
709 浏览

prestashop - Prestashop 网站错误。网站显示致命错误 mb_convert_encoding

我有一个 prestashop 网站http://www.mumsnbabysupermart.com.au/。该网站功能齐全,但突然网站停止工作并显示致命错误。错误是-

我做了谷歌搜索,但一无所获。在这个网站上,我整合了澳大利亚邮政、eWay 和 Paypal。