anchor.diff:      {error, Error} -> throw(Error)
     end.
   
  +normalize_unicode(String) ->
  +  case lists:dropwhile(fun(Char) -> Char =< 255 end, String) of
  +    [] -> String;
  +    _ -> binary_to_list(unicode:characters_to_binary(String))
  +  end.
  +
   normalize(Doc) ->
     [{case Key of
         Key when is_atom(Key) -> Key;
  -      Key when is_list(Key) -> list_to_atom(Key);
  +      Key when is_list(Key) -> list_to_atom(normalize_unicode(Key));
         Key when is_binary(Key) -> binary_to_atom(Key, utf8)
       end, validate(Value)} || {Key, Value} <- Doc].
   
  
positive.code: 
  %% @doc Removes docs matching a certain query
  -spec del(string()) -> ok.
  del(Query) -> gen_server:cast(?LUCENE_SERVER, {del, Query}).
  
  %%-------------------------------------------------------------------
  %% GEN_SERVER API
  
negative.code: 
  %% @doc Runs a query against the lucene server
  -spec match(string(), pos_integer(), infinity | pos_integer()) -> {[doc()], metadata()} | '$end_of_table'.
  match(Query, PageSize, Timeout) -> make_call({match, normalize_unicode(Query), PageSize}, Timeout).
  
  %% @equiv continue(PageToken, PageSize, infinity)
  -spec continue(page_token(), pos_integer()) -> {[string()], metadata()} | '$end_of_table'.
  