It all depends on your definition in the html, what is the encoding of the database,
if you use mysql maybe you will need to use set names command with the appropriate encoding before the request and at end you should use the header function to send the appropriate encoding before sending the data to the grid.
I'm not sure if json_encode works only with utf-8. IMHO this is not true. You can see strange chars in the console, but they are dispalyed correct in the browser.
Also you class is not correct written, they give me a error in FireBug console JSON.parse, which tell me that something is not correct.
In order to test with your class maybe you will need to turn off this jqGrid Settings – i.e. set it to false like this
$.jgrid.useJSON=false;<br/><br/><br/>Thisdoes notturn JSON off.Thisturn off the build inJSON.parse inFF35,IE8,Chrome...browsers<br/>Also turning thisoption off will cause using of eval insted of buil inJSON.<br/>The reason forthisistrivilal-your output isperformed with' (single quote) INSTED OF " (DOUBLE)<br />The build in JSON does not like single quotes like {'myname':'Some'....} <br />insted you should<br />{"myname":"Some"...} in the response.<br /><br />Regards<br />Tony<br />