Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在node.js中转换itunes XML播放列表时遇到问题_Javascript_Xml_Node.js_Unicode_Vlc - Fatal编程技术网

Javascript 在node.js中转换itunes XML播放列表时遇到问题

Javascript 在node.js中转换itunes XML播放列表时遇到问题,javascript,xml,node.js,unicode,vlc,Javascript,Xml,Node.js,Unicode,Vlc,不久前,我编写了一个快速的小节点命令行实用程序,将XML格式的itunes播放列表转换为m3u、xspf等。这样我就可以在工作时的linux设备、android phone*等上使用它们 *我有一个25G以上的音乐收藏,doubletwist等刚刚在尝试与我的mac同步时崩溃了 起初这很好,但随着我的音乐收藏的增长,我遇到了一个障碍:似乎没有媒体播放器可以找到任何带有非英语unicode字符的文件,如ñ、í和几乎任何日语汉字。并不是每个角色都会导致这个问题,但在很大程度上,这是一件事 由于itu

不久前,我编写了一个快速的小节点命令行实用程序,将XML格式的itunes播放列表转换为m3u、xspf等。这样我就可以在工作时的linux设备、android phone*等上使用它们

*我有一个25G以上的音乐收藏,doubletwist等刚刚在尝试与我的mac同步时崩溃了

起初这很好,但随着我的音乐收藏的增长,我遇到了一个障碍:似乎没有媒体播放器可以找到任何带有非英语unicode字符的文件,如ñ、í和几乎任何日语汉字。并不是每个角色都会导致这个问题,但在很大程度上,这是一件事

由于itunes文件路径部分是url编码的(并且不需要与目标格式的约束相匹配),并且需要部分替换为目标机器上的正确路径,因此我有以下代码来处理文件路径(除去不相关的内容):

我已经尝试了
decodeURI组件、decodeURI
,以及上面提到的我自己的自定义函数。以下是XML文件中的一个示例:

file:///Users/username/Music/iTunes/iTunes%20Media/Music/Compilations/Chronicles%20of%20Time/3-05%20Melodi%CC%81a%20de%20la%20montan%CC%83a%20(feat.%20Doug%20Perry%20&%20Matheus%20S.%20Garcia%20Souza).m4a
转换为:

/home/username/Music/Compilations/Chronicles of Time/3-05 Melodía de la montaña (feat. Doug Perry & Matheus S. Garcia Souza).m4a
看起来不错,但VLC、克莱门汀等找不到。以下是直接来自Nautilus的文件名:

3-05 Melodía de la montaña (feat. Doug Perry & Matheus S. Garcia Souza).m4a
位于路径中引用的目录中。请注意,
decodeURIComponent
解释的拐点位于'a'而不是'n'上(我的函数没有出现该错误,因此这本身不是问题)。
我如何修改它,以便媒体播放器可以找到曲目

所以问题最终是组合字符。解码和重新编码修复了此问题。

抱歉,我无法重现此问题。我从您的XML文件中选取了您的示例,在节点v4.6.0中使用
decodeURIComponent
对其进行解码,结果正确,波浪号位于“n”上。@LukeWoodward是的,因为我可以让它输出屈折的n,但即使这样,vlc也找不到该文件。您对m3u文件使用什么编码?要求“文本采用本地系统的默认非Unicode编码”。如果是UTF-8文本,则需要使用.m3u8扩展名。@LukeWoodward切换使VLC能够找到部分但不是全部。VLC仍然找不到文件名中包含汉字的任何文件。
3-05 Melodía de la montaña (feat. Doug Perry & Matheus S. Garcia Souza).m4a