【问题标题】:How do I make Cypher respect character encoding when using LOAD CSV in browser?在浏览器中使用 LOAD CSV 时,如何让 Cypher 尊重字符编码?
【发布时间】:2024-01-21 21:15:01
【问题描述】:

我的案例:丹麦学生名单(姓名中包含 ü、æ、ø、å 等字符)。最小的工作示例 CSV 文件:

Fornavn;Efternavn;Mobil;Adresse
Øjvind;Ørnenæb;87654321;Paradisæblevej 125, 5610 Åkirkeby
Süzette;Ågård;12345678;Ærøvej 123, 2000 Frederiksberg

浏览器内 Neo4j 编辑器:

$ LOAD CSV WITH HEADERS  FROM 'file:///path/to/file.csv' AS line FIELDTERMINATOR ";"
CREATE (:Elev {fornavn: line.Fornavn, efternavn: line.Efternavn, mobil: line.Mobilnr, adresse: line.Adresse})

导致注册如下: Neo4j browser screenshot,包含 ? 字符,其中需要丹麦语/德语字符。我的数据来自学习管理系统到 Excel。从 Excel 导出为 CSV 时,我可以控制文件编码作为另存为对话框的功能。我尝试在单独命名的文件中将 Excel 编码为“UTF-8”(它想要的 the Neo4j manual says)、“ISO-西欧”、“Windows-西欧”、“Unicode”,并调整了 FROM 'file:///path/to/file.csv' 子句相应地。

有趣的是,在“另存为”时,我从 Excel 请求得到完全相同的虚假陈述结果,与哪种(明显?)文件编码无关。直接将名称和地址复制粘贴到编辑器中时,我没有遇到同样的问题。

【问题讨论】:

    标签: character-encoding neo4j load-csv


    【解决方案1】:

    查看Michael Hunger's blog post here,其中包含一些提示,即:

    如果您使用非 ascii 字符(变音符号、重音符号等),请确保使用适当的语言环境或提供系统属性 -Dfile.encoding=UTF8

    【讨论】:

    • 似乎这样行不通::GET /db/manage/server/jmx/domain/org.neo4j/instance%3Dkernel%230%2Cname%3DConfiguration 给了我[ { "description": "The configuration parameters used to configure Neo4j", "name": "org.neo4j:instance=kernel#0,name=Configuration", "attributes": [{...}, { "description": "Configuration attribute", "name": "-Dfile.encoding", "value": "UTF8", "isReadable": "true", "type": "java.lang.String", "isWriteable": "false ", "isIs": "false " },...
    • 尽管我将上述:GET 反馈解释为文件编码已正确设置,但我仍然得到不需要的输出。我来看看@FrobberOfBits 提到的Hunger blog
    最近更新 更多