2011-04-04 99 views
1

我有这个问题,当我使用$('#id').val().length;它返回2当我使用字符æøåjQuery - .length()计算特殊字符为2?

有人能告诉我为什么以及如何使它像(一)char一样工作吗?

+0

好像很奇怪 – 2011-04-04 10:29:36

+0

你确定没有空间吗?如果你尝试'“æ”.length',会发生什么? – 2011-04-04 10:41:05

+0

我有一种感觉,这与UTF-8组合字符有关 - 有两种有效的方式可以将UTF中的很多字符作为单个字符和一对作为一对......这会导致很多令人头痛的问题,但是我不知道真的回答 – tobyodavies 2011-04-04 10:50:23

回答

1

我怀疑其他事情正在发生,这不是编码问题。

我拒绝相信这是一个jQuery问题(请参阅http://jsfiddle.net/KLzYf/我的评论)。

下面原始的HTML将报告“1”:

<html> 
<head> 
<meta http-equiv="content-type" content="text/html;charset=utf-8"> 
</head> 
<html> 
<body> 
<input type="text" value="æ" id="test"/> 
</body> 
<script type="text/javascript"> 
    alert(document.getElementById("test").value.length); 
</script> 

</html> 

我很想看到一些HTML /其他代码。而有一些测试,比如,什么下面给你

alert("æ".length); //=1? 
alert('"' + $('#id').val() + '"'); //are there any spaces/other chars? 

此外,如果您查看源代码的HTML,什么做你输入的内容看起来像。

+0

谢谢你是我的问题UTF-8 :) – ParisNakitaKejser 2011-04-04 11:00:15

+0

试试这个http://jsfiddle.net/KLzYf/9/将军通过 – Vixxs 2017-04-07 02:06:57

1

我想你使用额外的空间,无论是或字符中的任何一方。

<p id="t">&aelig;</p> 
$('#t').text().length 

这个工作正常。

+0

我想你已经错过了空间:-) – 2011-04-04 10:48:45