הפתרון הוא להשתמש בגירסת הunicode של הפונקציה.
[DllImport("winspool.Drv", EntryPoint = "OpenPrinterW", SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)] public static extern bool OpenPrinter([MarshalAs(UnmanagedType.LPWStr)] string szPrinter, out IntPtr hPrinter, IntPtr pDefault); //ref PRINTER_DEFAULTS pd);(שינו לב לשינוי בין LPWStr ל LPStr)