这很有趣..我正在尝试从openstreetmap读取地理查找数据.执行查询的代码如下所示
params = urllib.urlencode({'q': ",".join([e for e in full_address]), 'format': "json", "addressdetails" : "1"})
query = "http://nominatim.openstreetmap.org/search?%s" % params
print query
time.sleep(5)
response = json.loads(unicode(urllib.urlopen(query).read(), "UTF-8"), encoding="UTF-8")
print response
Run Code Online (Sandbox Code Playgroud)
对Zürich的查询在UTF-8数据上进行了正确的URL编码.这里没有奇迹.
http://nominatim.openstreetmap.org/search?q=Z%C3%BCrich%2CSWITZERLAND&addressdetails=1&format=json
Run Code Online (Sandbox Code Playgroud)
当我打印响应时,带有变音符号的u被编码为latin1(0xFC)
[{u'display_name': u'Z\xfcrich, Bezirk Z\xfcrich, Z\xfcrich, Schweiz, Europe', u'place_id': 588094, u'lon': 8.540443
Run Code Online (Sandbox Code Playgroud)
但这是无稽之谈,因为openstreetmap以UTF-8返回JSON数据
Connecting to nominatim.openstreetmap.org (nominatim.openstreetmap.org)|128.40.168.106|:80... connected.
HTTP request sent, awaiting response...
HTTP/1.1 200 OK
Date: Wed, 26 Jan 2011 13:48:33 GMT
Server: Apache/2.2.14 (Ubuntu)
Content-Location: search.php
Vary: negotiate
TCN: choice
X-Powered-By: PHP/5.3.2-1ubuntu4.7
Access-Control-Allow-Origin: *
Content-Length: 3342
Keep-Alive: …Run Code Online (Sandbox Code Playgroud) 我的Z/OS DB2数据库中有'N Tilde'字符.我正在从数据生成一个xml文件.在我有的XML中encoding=UTF-8,但是Internet Explorer给了我错误Illegal character in text field.如果我将编码更改为ISO-8859-1,它可以正常工作.
我认为ISO-8859-1是UTF-8的一个子集,那为什么它不适用于UTF-8?
UTF-8最适合XML文档吗?
我正在处理站点转移,在此过程中我的字符集被搞乱了。起初,我转移了所有文件,没有进行任何更改,新服务器上的文件显示<?>特殊字符的图标。浏览器的字符编码(Chrome 和 FF)告诉我它正在自动检测 UTF-8。页面的元字符集设置为 ISO-8859-1。副本是从多个数据库中的各个表中提取的(不要问)。
在原来的网站上,一切都按其应有的方式显示。在新网站上,<?>...我深入研究了它,在 php.ini 中发现默认字符集 =“UTF-8”,将其设置为空。现在网站上的大多数页面都显示良好,浏览器可以识别元字符集标记,大家都很高兴;也就是说,直到我导航到根目录之外的文件夹。
此文件夹中的文件虽然其元字符集是 ISO-8859-1,但以某种方式告诉浏览器以 UTF-8 方式读取,这意味着我<?>在这些页面上看到。如果我将浏览器设置为读取为 ISO-8859-1,则它显示正常。自动检测会将其重置为 UTF-8。有任何想法吗?
谢谢你!
\n\n更新(从下面的评论添加):
\n\n我按照 martinstoeckli 的建议通过W3C 检查器运行了该页面,它告诉我 HTTP Content-Type 是 ,Content-Type: text/html; charset=utf-8而元标记是<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>,这给了我一个冲突的字符编码声明错误。疯狂的是,我一辈子都无法弄清楚 UTF-8 声明是从哪里来的!它不在任何文件中,所有文件都以 UTF-8 格式保存,不带 BOM,php.ini 设置为声明无默认值,文件夹的 .htaccess 设置为 PatomaS 建议的那样。
(无论如何,Mozilla 的 Web Sniffer 确认了 HTTP 标头 Content-Type 为text/html; charset=utf-8。)
更新: \n虽然我们没有像我提出的那样找到这个问题的解决方案,但我确实决定解决字符编码问题的最佳方法是重构所有内容以使用 UTF-8 编码。当然,这可能意味着您会在这里看到我提出更多令人兴奋的新手问题,例如“为什么 utf8-encode() 不会执行我的 \xc5\x82\xc3\xa2\xc3\xb9\xc3\xb1dr\xc3 \xbf?” …
<li>Jain R.K. and Iyengar S.R.K., “Advanced Engineering Mathematicsâ€, Narosa Publications,</li>
Run Code Online (Sandbox Code Playgroud)
我在数据库中有很多原始 html 字符串。所有的文字都有这些奇怪的字符。如何转换为普通文本以将其保存回数据库。
$final = '<li>Jain R.K. and Iyengar S.R.K., “Advanced Engineering Mathematicsâ€, Narosa Publications,</li>';
$final = utf8_encode($final);
$final = htmlspecialchars_decode($final);
$final = html_entity_decode($final, ENT_QUOTES, "UTF-8");
$final = utf8_decode($final);
echo $final;
Run Code Online (Sandbox Code Playgroud)
我尝试了上面的代码,它在网络浏览器中正确显示,但仍然在数据库中保存了相同的奇怪字符。
数据库的字符集是utf-8
我想从yahoo.com获取搜索结果.
但是 file_get_contents()将UTF-8字符集(charset,雅虎使用的)内容转换为ISO-8859-1.
尝试:
$filename = "http://search.yahoo.com/search;_ylt=A0oG7lpgGp9NTSYAiQBXNyoA?p=naj%C5%A1%C5%A5astnej%C5%A1%C3%AD&fr2=sb-top&fr=yfp-t-701&type_param=&rd=pref";
echo file_get_contents($filename);
Run Code Online (Sandbox Code Playgroud)
脚本为
header('Content-Type: text/html; charset=UTF-8');
Run Code Online (Sandbox Code Playgroud)
要么
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Run Code Online (Sandbox Code Playgroud)
要么
$er = mb_convert_encoding($filename , 'UTF-8');
Run Code Online (Sandbox Code Playgroud)
要么
$s2 = iconv("ISO-8859-1","UTF-8",$filename );
Run Code Online (Sandbox Code Playgroud)
要么
echo utf8_encode(file_get_contents($filename));
Run Code Online (Sandbox Code Playgroud)
没有帮助,因为在获取网页内容特殊字符作为šťž被替换为问号???
我将不胜感激任何帮助.
我对此很陌生,对大多数人来说这可能很容易,但我已经为此困难了好几天.
我正在使用perl编写一个Web爬虫,并且Web爬虫将使用LWP和一些简单的正则表达式提取某些信息.
这些信息保存在mySQL数据库中,该数据库将在Android设备上使用.但是,当我测试网络爬虫时,我意识到一些信息是使用HTML数字编码(典華)的中文(典华),有些信息使用iso-8859-1编码(Zhífú).我使用PERL HTML :: Entities库解决了中文部分,当我将控制台设置为utf8时可以显示该库.但是,其他字母(Zhífú)只能在iso-8859-1中显示.如果我尝试在utf8中显示它,它将成为Zh f .我的问题是:
非常感谢你.
在我的客户端服务器上,当我浏览应用程序时,字符是错误的,因为所有浏览器(Firefox,Chrome,IE)都将页面解码为ISO-8859-1而不是UTF-8.本地工作很棒,在我的服务器上工作也很好.
我有一个用cakePHP 1.3.12开发的应用程序:
meta http-equiv="Content-Type" content="text/html; charset=UTF-8"在core.php中
Configure::write('App.encoding', 'UTF-8');
Run Code Online (Sandbox Code Playgroud)在database.php中
var $default = array(
'driver' => 'mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'aaa',
'password' => 'aaa',
'database' => 'aaa',
'prefix' => 'app_',
'encoding' => 'utf8'
);
Run Code Online (Sandbox Code Playgroud)数据库,表和字段排序规则是utf8_unicode_ci
我也在bootstrap.php的开头:
echo mb_internal_encoding();
Run Code Online (Sandbox Code Playgroud)
...并返回ISO-8859-1,所以我把...
mb_internal_encoding('UTF-8');
Run Code Online (Sandbox Code Playgroud)
......但没有任何改变.
工作不好的服务器有PHP 5.2.16.我认为它是客户端服务器上的模块或选项,因为本地和我的服务器工作正常.
任何想法都表示赞赏.
我必须在Java中将String解析为Date对象.字符串MMM d yyyy HH:mm:ss z设置为的模式后面的字符串French.
由于法语口音的编码,日期是在二月,八月或十二月时出现问题.例如,我将déc. 15 2011 16:55:38 CET在2011年12月15日获得.
我不能改变字符串的创建方式,所以我必须处理我身边的错误编码.似乎在生成时字符串编码错误(UTF-8内容编码为ISO 8859-1)然后转义.
现在我使用:
stringFromXML = stringFromXML.replaceAll("é", "é");
stringFromXML = stringFromXML.replaceAll("û", "û");
Run Code Online (Sandbox Code Playgroud)
它之所以有效,是因为法国月份中唯一的重点是é,û但有没有更清晰的方式来转换角色?
我使用Javamail Api为我的Android手机制作了一个电子邮件客户端.如果我尝试使用以下方法获取发件人的邮件地址和收件人邮件地址:
Address[] froma = m.getFrom();
String from = InternetAddress.toString(froma);
Address[] toa = m.getRecipients(Message.RecipientType.TO);
String to = InternetAddress.toString(toa);
Run Code Online (Sandbox Code Playgroud)
我得到一个像这样的字符串:
"Georg =?ISO-8859-1?Q?SP = E4the?=它必须是GeorgSpäthe或Georg Spaethe.
我认为问题是这是德国邮件与另一种编码.有人可以帮我解决这个问题吗?
在表中使用两个不同的字符集并在同一个表中使用单个列是否有意义?或者它会产生问题,特别是对于下面提到的例子?
例如,
Table charset - latin1
Column C1 charset - utf8mb4
Run Code Online (Sandbox Code Playgroud)