在 PHP 中将 utf8 字符转换为 iso-88591 并返回
我的一些脚本使用不同的编码,当我尝试组合它们时,这已成为一个问题。
但我无法更改他们使用的编码,而是我想更改脚本 A 结果的编码,并将其用作脚本 B 中的参数。
那么:有没有简单的方法可以将字符串从 UTF-8 更改为PHP 中的 ISO-88591? 我查看了 utf_encode 和 _decode,但它们没有做我想要的。 为什么不存在任何“utf2iso()”函数或类似函数?
我不认为我有不能用 ISO 格式编写的字符,所以这不应该是一个大问题。
Some of my script are using different encoding, and when I try to combine them, this has becom an issue.
But I can't change the encoding they use, instead I want to change the encodig of the result from script A, and use it as parameter in script B.
So: is there any simple way to change a string from UTF-8 to ISO-88591 in PHP? I have looked at utf_encode and _decode, but they doesn't do what i want. Why doesn't there exsist any "utf2iso()"-function, or similar?
I don't think I have characters that can't be written in ISO-format, so that shouldn't be an huge issue.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(10)
看看
iconv()
或mb_convert_encoding()
。顺便说一句:为什么不
utf8_encode()
和 < a href="http://php.net/function.utf8-decode" rel="noreferrer">utf8_decode()
适合你吗?所以基本上
所有的都应该做同样的事情 -
utf8_en/decode()
不需要特殊的扩展名,mb_convert_encoding()
需要 ext/mbstring 和iconv ()
需要 ext/iconv。Have a look at
iconv()
ormb_convert_encoding()
.Just by the way: why don't
utf8_encode()
andutf8_decode()
work for you?So essentially
all should do the same - with
utf8_en/decode()
requiring no special extension,mb_convert_encoding()
requiring ext/mbstring andiconv()
requiring ext/iconv.首先,不要使用不同的编码。 它会导致混乱,而 UTF-8 绝对是您应该在任何地方使用的编码。
您的输入很可能不是 ISO-8859-1,而是其他内容(ISO-8859-15、Windows-1252)。 要从这些转换,请使用 iconv 或
mb_convert_encoding
。尽管如此,
utf8_encode
和utf8_decode
应该适用于 ISO-8859-1。 如果您可以发布一个文件或 uuencoded 的链接,那就太好了或 base64 转换失败或产生意外结果的示例字符串。First of all, don't use different encodings. It leads to a mess, and UTF-8 is definitely the one you should be using everywhere.
Chances are your input is not ISO-8859-1, but something else (ISO-8859-15, Windows-1252). To convert from those, use iconv or
mb_convert_encoding
.Nevertheless,
utf8_encode
andutf8_decode
should work for ISO-8859-1. It would be nice if you could post a link to a file or a uuencoded or base64 example string for which the conversion fails or yields unexpected results.使用
html_entity_decode()
和htmlentities()
。htmlentities()
将您的输入格式化为UTF8
,html_entity_decode()
将其格式化回ISO-8859-1
。Use
html_entity_decode()
andhtmlentities()
.htmlentities()
formats your input intoUTF8
andhtml_entity_decode()
formats it back toISO-8859-1
.最好使用
$value = mb_convert_encoding($value,'HTML-ENTITIES','UTF-8');
特别是当您使用 AJAX 调用提交“ISO-8859-1”时人物。 它适用于中文、日语、捷克语、德语和许多其他语言。
It is much better to use
$value = mb_convert_encoding($value,'HTML-ENTITIES','UTF-8');
Specially when you are using AJAX call for submitting 'ISO-8859-1' characters. It works for Chinese, Japanese, Czech, German and many more languages.
在 head 中设置元标记,
使用链接 http://www.i18nqa.com/debug/ utf8-debug.html 替换你想要的符号字符。
然后使用 str_replace 就像
它是我使用的方法并且提供了很多帮助。 谢谢!
set meta tag in head as
use the link http://www.i18nqa.com/debug/utf8-debug.html to replace the symbols character you want.
then use str_replace like
Its the method i use and help alot. Thanks!
您需要使用 iconv 包,特别是它的 iconv 函数。
You need to use the iconv package, specifically its iconv function.
我使用这个功能:
在我的博客中查看我的功能
http://www.unexpectedit.com/php/php-处理非英语字符-utf8
I use this function:
Check out my function in my blog
http://www.unexpectedit.com/php/php-handling-non-english-characters-utf8
我用了:
I used:
就我而言,上传名称包含这些字符的文件后,Filezilla 甚至看不到它们! 在 Cpanel 文件管理器中,它们显示为 ? (黑色背景下)。
这种组合使其在浏览器上正确显示(HTML 文档是西方编码的):
In my case after files with names containing those characters were uploaded, they were not even visible with Filezilla! In Cpanel filemanager they were shown with ? (under black background).
And this combination made it shown correctly on the browser (HTML document is Western-encoded):