Javascript UTF-8字符串上的Parsefloat返回NaN

Javascript UTF-8字符串上的Parsefloat返回NaN,javascript,utf-8,Javascript,Utf 8,我正在开发一个应用程序,使用简单的HTMLDOM解析器()从网站上抓取数据 在我正在抓取的一个网站上,我必须将一些数据转换为UTF-8,因为该网站使用iso-8859-1编码。我喜欢这样: 'price' => mb_convert_encoding($element->childNodes(5)->plaintext, "UTF-8"), 我已将数据转换为JSON,以将其收集到JS文件中。在这里,我想使用parseFloat将“price”数据转换为整数: parseFlo

我正在开发一个应用程序,使用简单的HTMLDOM解析器()从网站上抓取数据

在我正在抓取的一个网站上,我必须将一些数据转换为UTF-8,因为该网站使用iso-8859-1编码。我喜欢这样:

'price' => mb_convert_encoding($element->childNodes(5)->plaintext, "UTF-8"),
我已将数据转换为JSON,以将其收集到JS文件中。在这里,我想使用parseFloat将“price”数据转换为整数:

parseFloat(value.price);
当我对在Php中转换为UTF-8的值执行此操作时,我得到一个“NaN”。有办法解决这个问题吗

编辑:

我已经在这里上传了这个东西:。键入cardname,即“Mutavault”,等待搜索完成并观看控制台

这:

结果:字符串(13)“20,00”

这是:

var_dump($element->childNodes(5)->innertext);

结果:�20,00,这很奇怪� 字符弄乱了我的JSON。

那是一个欧元符号。哎呀

将其添加到代码中以帮助调试

var parsed = parseFloat(cardValue.price);

if (isNaN(parsed)) {
    for (var i = 0; i < cardValue.price.length; i++) {
        console.log(cardValue.price.charCodeAt(i));
    }
}

我能想到的解决问题的唯一办法是使用
.replace()
删除所有非数字字符(或点)

因此,这将是:

parseFloat(value.price.replace(/[^\d.]/g, ''));

确保在执行此操作之前将逗号替换为点。

记录结果:value.price=20.00(这是一个字符串,因为它在我的控制台中是“黑色”而不是“蓝色”)、parseFloat(value.price)=NaN、parseInt(value.price)=NaNHey@Leon!这是
var_转储(mb_convert_编码($element->childNodes(5)->明文,“UTF-8”)我想看看。包括字符串长度。它是这样的:string(13)“20,00”-我后来用javascript删除了“”,并用“.”替换了“,”(在parseFloat之前)。此外,我在这里上传了thingie:。键入cardname,即“Mutavault”,等待搜索完成并观看控制台。@Leon请在问题中包含解决问题的相关信息-编辑它以包含日志结果。这样的信息在问题中比在评论中更有用。我不得不在你和Skwal之间做出选择,因为你们都是正确的。我不能同时接受这两种情况:(
cardValue.price.replace(/[^,.0-9]/g, '')
parseFloat(value.price.replace(/[^\d.]/g, ''));