diff --git a/src/edown_doclet.erl b/src/edown_doclet.erl
index a81f31420ebfae567d4c527274d7bb0445cac7e7..13079b73c66456ce50e90c7582523736220ce7e4 100644
--- a/src/edown_doclet.erl
+++ b/src/edown_doclet.erl
@@ -193,7 +193,7 @@ redirect_href(Attrs, Branch, BaseHRef, Target) ->
 	#xmlAttribute{value = "/" ++ _} ->
 	    false;
 	#xmlAttribute{value = Href} = A ->
-	    case re:run(Href, ":", []) of
+	    case re:run(Href, ":", [unicode]) of
 		{match, _} ->
 		    false;
 		nomatch ->
diff --git a/src/edown_xmerl.erl b/src/edown_xmerl.erl
index abd872956104bab4bd5c13cc663fc0b7c6984f61..ee5a1bc118584aeadd3c371b090dd1c3ea3e9df5 100644
--- a/src/edown_xmerl.erl
+++ b/src/edown_xmerl.erl
@@ -205,7 +205,7 @@ md_elem(Tag, Data, Attrs, Parents, E) ->
 	code  ->
 	    %% edoc_macros.erl hard-codes expansion of the {@type ...} macro
 	    %% as a HTML href inside <code>...</code>
-	    case re:run(Data, "<a href=", []) of
+	    case re:run(Data, "<a href=", [unicode]) of
 		{match,_} ->
 		    %% ["<code>", no_nl(Data), "</code>"];
 		    ["<code>", no_nl(Data), "</code>"];
@@ -266,7 +266,7 @@ no_nl(S) ->
 		       C =/= $\n], both).
 
 replace_edown_p(Data) ->
-    Data1 = binary_to_list(iolist_to_binary(Data)),
+    Data1 = unicode:characters_to_list([Data]),
     replace_edown_p(Data1, []).
 
 replace_edown_p("<edown_p>" ++ Data, Acc) ->