Vlademiro testei aqui seu prg e também não converte o meu texto, o seu sim, porem o meu texto tem outros caracteres como \u00f4 (UNICODE).
Mas obrigado por tentar ajudar.
Acabei fazendo a função de conversão e também foi útil por que no sistema não uso nada acentuado mesmo que o Harbour convertesse para um caracter da codepage acentuado não iria usar.
Código: Selecionar todos
FUNCTION Utf8_ansi(a,com_acento)
*-- a = string onde ha texto com codigos UNICODE
*-- com_acento="SIM" retorna com acento, se "" ou nil retorna sem acento
LOCAL aUnicode :={}, saida, maxele,pos,pos1,i
aadd(aUnicode,{"\u00c0" ,"À","A"})
aadd(aUnicode,{"\u00c1" ,"Á","A"})
aadd(aUnicode,{"\u00c2" ,"Â","A"})
aadd(aUnicode,{"\u00c3" ,"Ã","A"})
aadd(aUnicode,{"\u00c4" ,"Ä","A"})
aadd(aUnicode,{"\u00c5" ,"Å","A"})
aadd(aUnicode,{"\u00c6" ,"Æ","A"})
aadd(aUnicode,{"\u00c7" ,"Ç","C"})
aadd(aUnicode,{"\u00c8" ,"È","E"})
aadd(aUnicode,{"\u00c9" ,"É","E"})
aadd(aUnicode,{"\u00ca" ,"Ê","E"})
aadd(aUnicode,{"\u00cb" ,"Ë","E"})
aadd(aUnicode,{"\u00cc" ,"Ì","I"})
aadd(aUnicode,{"\u00cd" ,"Í","I"})
aadd(aUnicode,{"\u00ce" ,"Î","I"})
aadd(aUnicode,{"\u00cf" ,"Ï","I"})
aadd(aUnicode,{"\u00d1" ,"Ñ","N"})
aadd(aUnicode,{"\u00d2" ,"Ò","O"})
aadd(aUnicode,{"\u00d3" ,"Ó","O"})
aadd(aUnicode,{"\u00d4" ,"Ô","O"})
aadd(aUnicode,{"\u00d5" ,"Õ","O"})
aadd(aUnicode,{"\u00d6" ,"Ö","O"})
aadd(aUnicode,{"\u00d8" ,"Ø","O"})
aadd(aUnicode,{"\u00d9" ,"Ù","U"})
aadd(aUnicode,{"\u00da" ,"Ú","U"})
aadd(aUnicode,{"\u00db" ,"Û","U"})
aadd(aUnicode,{"\u00dc" ,"Ü","U"})
aadd(aUnicode,{"\u00dd" ,"Ý","Y"})
aadd(aUnicode,{"\u00df" ,"ß","ß"})
aadd(aUnicode,{"\u00e0" ,"à","a"})
aadd(aUnicode,{"\u00e1" ,"á","a"})
aadd(aUnicode,{"\u00e2" ,"â","a"})
aadd(aUnicode,{"\u00e3" ,"ã","a"})
aadd(aUnicode,{"\u00e4" ,"ä","a"})
aadd(aUnicode,{"\u00e5" ,"å","a"})
aadd(aUnicode,{"\u00e6" ,"æ","æ"})
aadd(aUnicode,{"\u00e7" ,"ç","c"})
aadd(aUnicode,{"\u00e8" ,"è","e"})
aadd(aUnicode,{"\u00e9" ,"é","e"})
aadd(aUnicode,{"\u00ea" ,"ê","e"})
aadd(aUnicode,{"\u00eb" ,"ë","e"})
aadd(aUnicode,{"\u00ec" ,"ì","i"})
aadd(aUnicode,{"\u00ed" ,"í","i"})
aadd(aUnicode,{"\u00ee" ,"î","i"})
aadd(aUnicode,{"\u00ef" ,"ï","i"})
aadd(aUnicode,{"\u00f0" ,"ð","ð"})
aadd(aUnicode,{"\u00f1" ,"ñ","n"})
aadd(aUnicode,{"\u00f2" ,"ò","o"})
aadd(aUnicode,{"\u00f3" ,"ó","o"})
aadd(aUnicode,{"\u00f4" ,"ô","o"})
aadd(aUnicode,{"\u00f5" ,"õ","o"})
aadd(aUnicode,{"\u00f6" ,"ö","o"})
aadd(aUnicode,{"\u00f8" ,"ø","ø"})
aadd(aUnicode,{"\u00f9" ,"ù","u"})
aadd(aUnicode,{"\u00fa" ,"ú","u"})
aadd(aUnicode,{"\u00fb" ,"û","u"})
aadd(aUnicode,{"\u00fc" ,"ü","u"})
aadd(aUnicode,{"\u00fd" ,"ý","y"})
aadd(aUnicode,{"\u00ff" ,"ÿ","y"})
saida=""
maxele=len(a)
for i=1 to maxele
pos=AT("\u",a)
if pos>0
saida+=substr(a,1,pos-1)
pos1=ASCAN(aUnicode,{|e| e[1]=substr(a,pos,6)})
if pos1>0
if empty(com_acento)
saida+=aUnicode[pos1][3]
else
saida+=aUnicode[pos1][2]
endif
else
saida+="?"
endif
a=substr(a,pos+6)
endif
next
saida+=a
return saida;
Agora começar a mexer com o HB_jsonDecode().