【问题标题】:Encoding of Danish letters丹麦字母的编码
【发布时间】:2021-04-05 17:15:29
【问题描述】:

我得到一个城市名称作为 GET 变量。我需要将第一个字母大写。 如果 Get 变量是“herning”,我可以毫无问题地将其设为 H,但如果变量是“ølstykke”,我只能将其设为小写 ø,而不是大写 Ø。

header('Content-type: text/html; charset=utf-8');
print strToUpper(mb_substr($_GET["city"], 0, 1));

如果我不将标头设置为 utf-8,我只会得到奇怪的字符。

有什么想法吗?

更新代码

<?php
header('Content-type: text/html; charset=utf-8');
$city = mb_convert_case($_GET["city"], MB_CASE_TITLE, "UTF-8");//Ølstykke
print $city;
$section = file_get_contents('https://api.dataforsyningen.dk/steder?hovedtype=Bebyggelse&undertype=by&prim%C3%A6rtnavn='.$city);
$section = json_decode($section);
print '<pre>';
print_r($section);
print '</pre>';

解决方案:发送到 dataforsyningen 时,围绕 $city 的 urlencode() 完成了这项工作。

【问题讨论】:

标签: php character-encoding


【解决方案1】:

使用mb_strtoupper 并在mb_substr 中指定字符编码

echo mb_strtoupper(mb_substr('ølstykke', 0, 1,'utf-8'));//Ø

在您的情况下,您可能不仅需要第一个字符,还需要其余字符, 所以也许mb_convert_case 函数可以帮助你。

echo mb_convert_case('ølstykke', MB_CASE_TITLE, "UTF-8");//Ølstykke

【讨论】:

  • 是的,它是大写的。但是后来我需要通过 REST api 将它发送到这个地址 api.dataforsyningen.dk/… 并且这不起作用。就像城市名称编码错误一样。它适用于 Herning 或 Vejle,但不适用于包含 æ、ø 或 å 的名称。
  • @JeppeDonslund 那么您尚未向我们展示的代码还有其他问题。
  • 我已经用适用于 herning 的新代码更新了我的问题,但不适用于 ølstykke 或 københavn
  • 我找到了诀窍。 urlencode() 时也发送 Dataforsyningen.
猜你喜欢
  • 2017-12-30
  • 1970-01-01
  • 2021-04-12
  • 1970-01-01
  • 2016-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-15
相关资源
最近更新 更多