Basically we use the Geotools library for reading the shapefile, and that has poor support for different characters sets (largely because shapefiles themselves have poor support for it). Although it’s not 100% clear, it doesn’t look like Geotools shapefile reader supports the .cpg file which you can use to set the character set “codepage” (see discussion here https://sourceforge.net/p/geotools/mailman/message/35098312/ ). There would probably need to be either some software development done on the shapefile reader or on Geotools itself to properly handle Persian characters.
The links mentions “I think you need to provide the correct charset connection parameter”. This is also mentioned here http://docs.geotools.org/stable/userguide/library/data/shape.html
If you are working with Arabic, Chinese or Korean character sets you will need to make use of the “charset” connection parameter when setting up your shapefile
You’d probably need to modify this file https://github.com/graphhopper/graphhopper/blob/master/reader-shp/src/main/java/com/graphhopper/reader/shp/ShapeFileReader.java in the method openShapefileDataStore I believe, when it opens the shapefile.
In an ideal world, Geotools should actually read the cpg file (which is probably what QGIS does?) and then it would just work automatically (assuming you have a cpg file).