Erlang 为什么在couchdb中创建文档时会导致utf8字符错误?

Erlang 为什么在couchdb中创建文档时会导致utf8字符错误?,erlang,couchdb,Erlang,Couchdb,在couchdb中创建文档时产生以下错误 12> ADoc. [{<<"Adress">>,<<"Hjalmar Brantingsgatan 7 C">>}, {<<"District">>,<<"Brämaregården">>}, {<<"Rent">>,3964}, {<<"Rooms">>,2}, {<<"Area"&

在couchdb中创建文档时产生以下错误

12> ADoc.
[{<<"Adress">>,<<"Hjalmar Brantingsgatan 7 C">>},
 {<<"District">>,<<"Brämaregården">>},
 {<<"Rent">>,3964},
 {<<"Rooms">>,2},
 {<<"Area">>,0}]
13> IDoc.
[{<<"Adress">>,<<"Segeparksgatan 2A">>},
 {<<"District">>,<<"Kirseberg">>},
 {<<"Rent">>,9701},
 {<<"Rooms">>,3},
 {<<"Area">>,83}]
14> erlang_couchdb:create_document({"127.0.0.1", 5984}, "proto_v1", IDoc).
{json,{struct,[{<<"ok">>,true},
           {<<"id">>,<<"c6d96b5f923f50bfb9263638d4167b1e">>},
           {<<"rev">>,<<"1-0d17a3416d50129328f632fd5cfa1d90">>}]}}
15> erlang_couchdb:create_document({"127.0.0.1", 5984}, "proto_v1", ADoc).
** exception exit: {ucs,{bad_utf8_character_code}}
     in function  xmerl_ucs:from_utf8/1 (xmerl_ucs.erl, line 185)
     in call from mochijson2:json_encode_string/2 (/Users/admin/AlphaGroup/src/mochijson2.erl, line 200)
 in call from mochijson2:'-json_encode_proplist/2-fun-0-'/3 (/Users/admin/AlphaGroup/src/mochijson2.erl, line 181)
 in call from lists:foldl/3 (lists.erl, line 1197)
 in call from mochijson2:json_encode_proplist/2 (/Users/admin/AlphaGroup/src/mochijson2.erl, line 184)
 in call from erlang_couchdb:create_document/3 (/Users/admin/AlphaGroup/src/erlang_couchdb.erl, line 256)
12>ADoc。
[{,},
{,},
{,3964},
{,2},
{,0}]
13> 伊多克。
[{,},
{,},
{,9701},
{,3},
{,83}]
14> erlang_couchdb:创建_文档({“127.0.0.1”,5984},“proto_v1”,IDoc)。
{json,{struct,[{,true},
{,},
{,}]}}
15> erlang_couchdb:创建_文档({“127.0.0.1”,5984},“proto_v1”,ADoc)。
**异常退出:{ucs,{bad_utf8_character_code}
在函数xmerl\u ucs中:来自(xmerl\u ucs.erl,第185行)
来自mochijson2的调用中:json_encode_string/2(/Users/admin/AlphaGroup/src/mochijson2.erl,第200行)
来自mochijson2的调用中:'-json_encode_proplist/2-fun-0-'/3(/Users/admin/AlphaGroup/src/mochijson2.erl,第181行)
从列表中调用:foldl/3(lists.erl,第1197行)
来自mochijson2的调用中:json_encode_proplist/2(/Users/admin/AlphaGroup/src/mochijson2.erl,第184行)
来自erlang_couchdb的调用中:创建文档/3(/Users/admin/AlphaGroup/src/erlang_couchdb.erl,第256行)
以上两个文档中的一个可以在couchdb中创建,没有问题(IDoc)


有谁能帮我找出它的原因吗?

我想这是问题所在。首先需要将unicode转换为二进制。下面的链接中有一个示例


。核心功能在于

在Erlang代码中输入非ASCII字符非常灵活,因为它在shell中的工作方式与在编译的Erlang代码中不同

尝试将二进制文件显式输入为UTF-8:

<<"Br", 16#c3, 16#a4, "mareg", 16#c3, 16#a5, "rden">>

也就是说,“ä”由UTF-8中的字节C3 A4表示,“å”由C3 A5表示。有很多方法可以找到这些代码;一个快速的搜索出现了


通常情况下,您会从代码之外的某个地方获得输入,例如从文件读取、键入web表单等,这样您就不会有这个问题。

IDoc只使用ASCII,但ADoc有Brämaregården,可能编码不正确。