Eu tive problema semelhante e foi por causa do cast para char…Lembre-se que no cast para char somente numeros positivos são aceitos e o char não tem a mesma faixa de um int.
No meu caso o simbolo quadrado era porque no meu cast,gerasva um numero negativo,ai o cast ia pra esse simoblo ae.
Mas quando evitei a situacao consegui a conversao.
Confere seu cast pra char se nao fere a regra que citei.