PHP希腊url转换

PHP希腊url转换,php,url,character-encoding,Php,Url,Character Encoding,我有一个类似的URL:domain.tld/∑χετικάμε_uuμας [编辑] 读取$服务器['REQUEST\u URI'],我开始使用: %CE%A3%CF%87%CE%B5%CF%84%CE%B9%CE%BA%CE%AC_%CE%BC%CE%B5_%CE%BC%CE%B1%CF%82 [/编辑] 在PHP中,我需要将其转换为HTML,我在以下方面取得了很大进展: htmlentities(urldecode($navstring), ENT_QUOTES, 'UTF-8'); 其

我有一个类似的URL:domain.tld/∑χετικάμε_uuμας

[编辑] 读取$服务器['REQUEST\u URI'],我开始使用:

%CE%A3%CF%87%CE%B5%CF%84%CE%B9%CE%BA%CE%AC_%CE%BC%CE%B5_%CE%BC%CE%B1%CF%82
[/编辑]

在PHP中,我需要将其转换为HTML,我在以下方面取得了很大进展:

htmlentities(urldecode($navstring), ENT_QUOTES, 'UTF-8');
其结果是:

Σχετικά_με_μας
但是“ά”变成了“Δ,但我需要将它转换为

ά

我真的很感激你的帮助。我需要一个通用的解决方案,而不是“字符串替换”

我已经玩了一点,下面的方法奏效了。使用mb convert编码代替htmlentities:

mb_convert_encoding(urldecode($navstring),'HTML-ENTITIES','UTF-8');
//string(90) "domain.tld/Σχετικά_με_μας"
参见

信息 所有现代web浏览器都理解UTF-8字符编码。 我的建议是:

  • 始终了解所使用数据的字符编码
  • 使用UTF-8存储数据
  • 使用UTF-8输出数据
mbstring php扩展不只是处理Unicode字符串。它还可以在各种字符编码之间转换多字节字符串。 使用mb_detect_encoding()和mb_convert_encoding()函数将Unicode字符串从一种字符编码转换为另一种字符编码

PHP需要知道 您还需要告诉PHP您正在使用UTF-8,要告诉他默认值,您可以在PHP.ini文件中执行:

default_charset = "UTF-8";
该默认值将添加到PHP返回的默认内容类型标头中,除非您使用header()函数指定该值:

header('Content-Type: application/json;charset=utf-8');
牢记 PHP中的许多函数都使用默认字符集,例如:

  • htmlentities()
  • htmlspecialchars()
  • 所有mbstring函数

对我来说,这听起来像是一个字符集问题。为什么您需要使用
htmlentities()
,您对该数据做了什么,还是只是为了显示?当您强制该值为UTF-8时会发生什么,如:htmlentities(utf8\u encode($value)…当读取我得到的服务器变量时:%CE%A3%CF%87%CE%B5%CF%84%CE%B9%CE%BA%CE%AC\%CE%BC%CE%B5\%CE%BC%CE%B1%CF%82这就是为什么我需要URL解码mb\\ U检测\ U编码($navstring)给了你什么?Elbarto,它给了我“ASCII”(因为它是百分比、字母和数字…)