我✓在html文档中显示html实体(复选标记:✓),该文档使用iso-8859-1作为字符集.
在Firefox中,它显示为复选标记.在IE中,它显示为方框.切换到UTF-8似乎没有什么区别.
有没有可靠的方法在不使用图像的情况下在IE 6和7中显示这些实体?
internet-explorer entities iso-8859-1 character-encoding html-entities
我有一个MySQL表,其中120,000行以UTF-8格式存储.有一个字段,产品名称,包含带有许多重音的文本.在将其转换为友好的URL形式(ASCII)后,我需要使用相同的名称填充第二个字段.
由于PHP不直接处理UTF-8,我使用:
$value = iconv ('UTF-8', 'ISO-8859-1', $value);
将名称转换为ISO-8859-1,然后是一个巨大的strstr语句,用其非重音等效项替换任何重音字符(例如,à变为a).
但是,原始文本名称是使用智能引号输入的,而且每当遇到一个时,iconv会发出窒息 - 我得到:
Unknown error type: [8] iconv() [function.iconv]: Detected an illegal character in input string
为了在使用iconv之前删除智能引号,我尝试使用三个语句,如:
$value = str_replace('’', "'", $value);
(是UTF-8智能单引号的原始值)
因为文本文件太长,所以这些str_replace会导致脚本每次都超时.
在运行iconv之前,从UTF-8字符串中删除智能引号(或任何无效字符)的最快方法是什么?
或者,这个问题是否有更简单的解决方案?将具有多个重音符号(UTF-8)的名称转换为没有重音符号,拼写正确的ASCII格式的最快方法是什么?
我有一个输出JSON的servlet.servlet的输出编码是ISO-8859-1.我们的webapp中的页面也设置为ISO-8859-1.我会使用UTF-8,但这不在我的控制之内; 我们必须使用ISO-8859-1.
当我单独点击servlet时,我可以看到已经输出的JSON数据.字符编码是正确的,没有一个字符看起来很奇怪.
但是,当我通过AJAX调用servlet并使用检索到的数据来填充选择框时,我得到了(似乎)所有具有重音符号的字符(例如我带有重音符号或重音符号,音乐符号或抑扬音符号) ).当我在Firebug下的Net选项卡中查看响应时,我可以看到文本看起来很好.但是,当我使用该数据填充选择框时,我会得到带有问号的钻石.
这些字符都是有效的ISO-8859-1字符,所以我不明白为什么它们没有正确显示.
编辑
更多信息.我用GET,jQuery.ajax我已经开始scriptCharset了ISO-8859-1.在服务器端,我已经明确地将编码设置为ISO-8859-1request.setCharacterEncoding("ISO-8859-1");
编辑
代码示例:
这就是我目前所拥有的.我scriptCharset: "ISO-8859-1"没有添加任何效果.
jQuery.ajax({
url: "/countryAndProvinceCodeServlet",
data: data,
dataType: "json",
type: "GET",
success: function(data) {
...
},
});
Run Code Online (Sandbox Code Playgroud)
我的servlet使用org.json.JSONObject并通过执行简单输出字符串response.getWriter().print(jsonObject.toString());
UPDATE
约每JSON,以及如何它应该是UTF-8的评论,我想看看我是否能获取数据为文本(所以设置dataType到text中jQuery.ajax),然后评估它作为自己的JSON(在Javascript).这似乎也不起作用!当我这样做时console.log,我仍然可以获得时髦的钻石.但是,当我在Firebug的Net选项卡下查看它时,一切都显示正常:
网络标签:
{"error":false,
"provinces":{"DZ-01":"Adrar",
"DZ-16":"Alger",
"DZ-23":"Annaba",
"DZ-44":"Aïn Defla",
"DZ-46":"Aïn Témouchent",
"DZ-05":"Batna",
"DZ-07":"Biskra",
"DZ-09":"Blida",
"DZ-34":"Bordj Bou Arréridj",
"DZ-10":"Bouira",
"DZ-35":"Boumerdès",
"DZ-08":"Béchar",
"DZ-06":"Béjaïa",
"DZ-02":"Chlef",
"DZ-25":"Constantine",
"DZ-17":"Djelfa",
"DZ-32":"El Bayadh",
"DZ-39":"El Oued",
"DZ-36":"El Tarf", …Run Code Online (Sandbox Code Playgroud) 我们有一堆手动输入的数据库数据.它们包含许多英镑(£)符号.原始用户从某处复制/粘贴英镑符号,不知道在哪里(我不确定它是否重要......).
无论如何,当在PHP页面上打印出数据时,英镑符号显示为替换字符.页面中有<meta charset="utf-8"/>.在浏览器中,如果将编码更改为ISO-8859-1,则正确显示井号.
经过一番挖掘,我得出结论,原始数据录入人员将ISO-8859-1编码的英镑符号复制/粘贴到数据库中.因此,除非使用页面呈现ISO-8859-1,否则它将无法正确显示.
以下是Chrome的标题信息:
Request URL:http://www.mysite.com/test.php
Request Method:GET
Status Code:200 OK
Request Headersview source
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Cookie:X-Mapping-goahf....
Host:www.mysite.com
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2
Response Headersview source
Connection:Keep-Alive
Content-Type:text/html; charset=UTF-8
Date:Wed, 07 Dec 2011 22:38:14 GMT
Server:Apache/2.2
Transfer-Encoding:chunked
Run Code Online (Sandbox Code Playgroud)
MySQL表也说它使用的latin1_swedish_ci是默认值.
那么我该如何解决这个问题呢?我不太了解字符编码的工作方式以及将字符从一个地方复制/粘贴到另一个地方时会发生什么.
我试着去这个页面:
http://www.fileformat.info/info/unicode/char/a3/browsertest.htm
并复制英镑符号并将其粘贴到数据库中,认为可以修复它,但它似乎没有...我如何使数据库中的英镑符号成为UTF-8磅符号而不是ISO- 8859-1?
我正在尝试使用python,curl和BeautifulSoup在日语中抓一页.然后我将文本保存到使用utf-8编码的MySQL数据库,并使用Django显示结果数据.
这是一个示例URL:
我有一个函数用于将HTML提取为字符串:
def get_html(url):
c = Curl()
storage = StringIO()
c.setopt(c.URL, str(url))
cookie_file = 'cookie.txt'
c.setopt(c.COOKIEFILE, cookie_file)
c.setopt(c.COOKIEJAR, cookie_file)
c.setopt(c.WRITEFUNCTION, storage.write)
c.perform()
c.close()
return storage.getvalue()
Run Code Online (Sandbox Code Playgroud)
然后我把它传递给BeautifulSoup:
html = get_html(str(scheduled_import.url))
soup = BeautifulSoup(html)
Run Code Online (Sandbox Code Playgroud)
然后将其解析并将其保存到数据库中.然后我使用Django将数据输出到json.这是我正在使用的视图:
def get_jobs(request):
jobs = Job.objects.all().only(*fields)
joblist = []
for job in jobs:
job_dict = {}
for field in fields:
job_dict[field] = getattr(job, field)
joblist.append(job_dict)
return HttpResponse(dumps(joblist), mimetype='application/javascript')
Run Code Online (Sandbox Code Playgroud)
结果页面显示字节码,例如:
xe3\x82\xb7\xe3\x83\xa3\xe3\x83\xaa\xe3\x82\xb9\xe3\x83\x88
\ xe8\x81\xb7\xe5\x8b\x99\xe5\x86\x85\xe5\xae
\ xb9\xe3\x82\xb7\xe3\x82\xb9\xe3\x82\xb3\xe3\x82\xb7\xe3\x82\xb9\xe3\x83\x86\xe3\x83\xa0\xe3\x82\XBA\XE3\X81\XAE\XE3\X82\XB3\XE3\X83版权所有\ xA9\XE3\X83\x9c\XE3\X83\XAC\XE3\X83\XBC\XE3\X82\XB7\XE3\X83\XA7\XE3\X83\XB3\XE4\XBA\x8b\XE6\xa5\XAD\xe9\X83\xa8\XE3\X81\XA7\XE3\X81\XAF\XE3\X80\X81\XE4\XBA\XBA\XE3\X82\X92\XE4\XB8\XAD\xe5\XBF\X83\XE3\X81\xa8\XE3\X81\X97\XE3\X81\x9f\XE3\X82\XB3\XE3\X83\x9f\XE3\X83\xa5\XE3\X83\x8b\XE3\X82\XB1\XE3\X83\XBC\XE3\X82\XB7\XE3\X83\XA7\XE3\X83\XB3\XE3\X81\XAB\XE3\X82\X88\XE3\X82\x8a\XE3 \
而不是日本人.
我一直在研究并将我的数据库转换为utf-8,尝试将文本从iso-8859-1解码并编码为utf-8.
基本上我不知道我在做什么,并且会感谢我能得到的任何帮助或建议,所以我可以避免花一天时间试图解决这个问题.
我正在制作一个像拉丁语á, ã, ç和其他人一样的页面.该站点从SQL数据库中提取数据.我正在使用这个<head>:<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"/>
使用此标题,HTML重音字符很好,但SQL数据显示为çã而不是ão,如果我将charsetISO-8859-1 更改为UTF-8,则所有HTML重音字符由 (问号)显示,SQL数据显示重音很好.
除了转义所有HTML字符或SQL字符之外,有没有办法解决它?
PS:我已经尝试过了,mysql_set_charset('utf8');并SET NAMES utf8没有对我有用.
我正在尝试将UTF-8 string转换为ISO-8859-1 char*以用于遗留代码.我看到这样做的唯一方法是iconv.
我肯定更喜欢完全string基于C++的解决方案,然后只需调用.c_str()生成的字符串.
我该怎么做呢?请尽可能使用代码示例.iconv如果它是你知道的唯一解决方案,我很好用.
我正在开发一个应用程序,我必须显示从服务器响应中收到的文本textview.文字可能在English or Hindi.在印地文的情况下,一些字母被问号代替(?).这是什么问题?这就是我设置文本的方式.Android version 6.字体类型 - Proxima Nova Alt Regular
for (int i = 0; i < 3; i++) {
viewHolder.lines[i].setText(poem.lines[i].lineText);
}
Run Code Online (Sandbox Code Playgroud)
假设我在网页中有一个带有 charset 的输入字段UTF8;假设我打开一个用 as 字符集编码的文本文件ISO-8859-1。
现在,我将带有特殊字符(例如,\xc3\xb4)的字符串从文件复制并粘贴到输入字段:我看到特殊字符正确显示到输入字段中。
ISO-8859-1谁进行从到 的转换UTF8?浏览器?
我有一个字符串$ data,用utf-8编码.我假设我不知道这个字符串是utf-8还是iso-8859-1.我想使用Perl Encode :: Guess模块来查看它是否是其中之一.我无法弄清楚这个模块是如何工作的.
我尝试了以下四种方法(来自http://perldoc.perl.org/Encode/Guess.html):
use Encode::Guess qw/utf8 latin1/;
my $decoder = guess_encoding($data);
print "$decoder\n";
Run Code Online (Sandbox Code Playgroud)
结果: iso-8859-1或utf8
use Encode::Guess qw/utf8 latin1/;
my $enc = guess_encoding($data, qw/utf8 latin1/);
ref($enc) or die "Can't guess: $enc";
my $utf8 = $enc->decode($data);
print "$utf8\n";
Run Code Online (Sandbox Code Playgroud)
结果:无法猜测:iso-8859-1或utf8 at encodage-windows.pl第25行,第18110行.
use Encode::Guess qw/utf8 latin1/;
my $decoder = Encode::Guess->guess($data);
die $decoder unless ref($decoder);
my $utf8 = $decoder->decode($data);
print "$utf8\n";
Run Code Online (Sandbox Code Playgroud)
结果: iso-8859-1或utf8 at encodage-windows.pl第30行,第18110行.
use Encode::Guess qw/utf8 latin1/;
my $utf8 = Encode::decode("Guess", $data);
print "$utf8\n";
Run Code Online (Sandbox Code Playgroud)
结果: …