Ich hatte ein ähnliches Problem und habe alle Einstellungen ausprobiert, die ich im Internet finden konnte - vergebens.
In meinem Fall war das Problem die Konfiguration von FreeTDS selbst. Unter Linux ist die Datei /etc/freetds/freetds.conf
Ich musste die Version auf 7.0 ändern (vielleicht funktionieren auch andere Nummern. Ich habe gerade 7.0 ausprobiert)
[global]
# TDS protocol version
tds version = 7.0
Danach schien der Treiber Änderungen des Zeichensatzes gerne zu akzeptieren.
ini_set('mssql.charset', 'UTF-8');
Übrigens:Die Änderung ist sofort wirksam, es muss danach nichts neu gestartet werden