我想在PHP中输出以下字符串:
äöü߀
因此,我手动将其编码为utf8:
ÃÃÃÃÃÃÀ
所以我的脚本是:
<?php
header('content-type: text/html; charset=utf-8');
echo 'ä ö ü ß €';
?>
前4个字符是正确的(äöüß)但不幸的是,这个符号不正确:
äöüß
你能告诉我我做错了什么吗?我的编辑器(Notepad ++)具有编码(Ansi / UTF-8)和格式(Windows / Unix)的设置。我需要改变它们吗?
我希望你能帮助我。提前谢谢!
答案 0 :(得分:8)
最后一个字符不在文件中(尝试查看源代码),这就是你没有看到的原因。
我认为你可能最好将PHP文件保存为UTF-8(在Notepad ++中,选项可用格式 - &gt;在没有BOM的UTF-8中编码),并在PHP文件中插入实际字符(即在Notepad ++)中,而不是在任何地方插入Ã
。您可能会发现Windows Character Map对于插入unicode字符非常有用。
答案 1 :(得分:5)
欧元符号(U + 20AC)以UTF-8编码,有三个字节,而不是两个字节。这可以看作here。所以你的编码是错误的。
答案 2 :(得分:4)
如果要将其正确输出到utf8,您的脚本应为:
<?php
header('content-type: text/html; charset=utf-8');
echo "\xc3\xa4"."\xc3\xb6"."\xc3\xbc"."\xc3\x9f"."\xe2\x82\xac";
?>
这样即使你的php脚本保存为非utf-8编码,它仍然可以工作。
答案 3 :(得分:2)
您应该始终将编辑器设置为生成的HTML指示浏览器使用的相同编码。如果要将HTML页面解释为UTF-8,请将文本编辑器设置为UTF-8。 PHP完全不知道用于创建文件的编辑器的编码设置;它将字符串视为字节流。
换句话说,只要文件中包含正确的字节,一切都会正常工作。确保文件中正确字节的最简单方法是将您的编码设置为网页应该处于的相同位置。任何其他方法都会使生活变得更加困难。
但最好的防御措施是将非ASCII字符完全保留在代码之外。您可以将它们从数据库或本地化文件中取出。这意味着可以在基本上任何编辑器中修改代码,而不必担心损坏编码。
答案 4 :(得分:0)
header('Content-Type: text/html; charset=UTF-8');
这只会告诉浏览器您要发送哪种内容以及应该如何处理它。它不会设置您要发送的实际内容的编码。完全取决于你履行自己的承诺。您的内容不会因为您设置该标头而神奇地从UTF-8转换为UTF-8。如果您告诉浏览器将内容视为UTF-8,但您发送的是Latin-1编码数据,那么它当然会中断。
答案 5 :(得分:0)
这对我有用
private void Form_Load(object sender, EventArgs e)
{
var list = new List<MyModel>();
list.Add(new MyModel() { Property1 = "Value 1", Property2 = 1, Property3 = false });
list.Add(new MyModel() { Property1 = "Value 2", Property2 = 2, Property3 = true });
list.Add(new MyModel() { Property1 = "Value 3", Property2 = 3, Property3 = true });
this.dataGridView1.DataSource = list;
}
答案 6 :(得分:0)
试试看,它对我有用。这段代码会将ã¶更改为ö
<?php
header('Content-Type: text/html; charset=UTF-8');
echo $category = 'Computer & Zubehör';
exit;
?>
结果: 电脑与Zubehör