"Sprache für Nicht-Unicode-Programme" und kyrillisch Export nach PDF

2406
Alexey Popkov

Dank des Kommentars von Szabolcs zu dieser Frage habe ich einen Weg gefunden, um Exportkyrillische Symbole von Mathematica korrekt in PDF zu konvertieren. Wir müssen lediglich eine systemweite Variable, die im Allgemeinen als local (oder Sprache für Nicht-Unicode-Anwendungen ) bezeichnet wird, wie hier beschrieben auf US-Englisch einstellen :

  1. Öffnen Sie Regions- und Sprachoptionen in der Systemsteuerung .

  2. Wählen Sie auf der Registerkarte Erweitert unter Sprache für Nicht-Unicode-Programme die Option Englisch (USA) aus .

Dieser Ansatz hat einige Einschränkungen hinsichtlich der Benutzerfreundlichkeit:

  • Nur ein Administrator kann den Gebietsschemawert des Systems festlegen.
  • Um das Systemgebietsschema festzulegen, ist ein Neustart des Systems erforderlich.
  • Es kann jeweils nur ein Systemgebietsschema festgelegt werden.

Leider betrifft diese Einstellung nicht nur Mathematica, sondern jedes Nicht-Unicode-Programm, das auf dem Computer verwendet wird, einschließlich einiger Windows-Komponenten. Als Ergebnis funktionieren diese Programme fehlerhaft und in manchen Fällen kann das Ändern dieser Option sogar zu einer BSOD führen . Beispielsweise sieht der Befehlszeileninterpreter cmd.exe in der lokalisierten Version von Windows nach dem Festlegen des lokalen Systems des Systems auf Englisch folgendermaßen aus: cmd.exe

Für Windows Server 2003 und Windows XP hat Microsoft das Microsoft AppLocale-Dienstprogramm entwickelt, das die Ausführung von Nicht-Unicode-Anwendungen ohne Änderung des Gebietsschemas des Systems ermöglicht (Dank des Windows-Programmierers für die Referenz). Aber ich habe es nicht geschafft, dass es für Mathematica funktioniert .

Ist es möglich, das Systemgebietsschema für Mathematica individuell festzulegen, um die korrekte kyrillische Version Exportvon PDF zu erhalten?

BEARBEITEN

Die ausführbare MathLink Datei PDF.exe befindet sich im Verzeichnis . \ SystemFiles \ Converters \ Binaries \ Windows . Wahrscheinlich sollten wir das Systemgebietsschema US English für diese ausführbare Datei genau festlegen?

PS Ich verwende lokalisierte Windows XP SP3.

3
Wenn Sie damit keine Lösung finden, können Sie versuchen, SuperUser zu fragen (oder ein Flag für die Migration zu markieren), da es hier weniger um * Mathematica * geht. Mr.Wizard vor 11 Jahren 0
@ Mr.Wizard Wahrscheinlich hast du recht, ich werde es für die Migration auf SuperUser markieren. Alexey Popkov vor 11 Jahren 0
Welche Codepage meldet es von einer Eingabeaufforderung aus, wenn Sie `mode con cp` ausführen? Für Russisch muss es "866" sein. bytebuster vor 11 Jahren 0
@bytebuster Ja, ich bekomme `866`. Alexey Popkov vor 11 Jahren 0
Dann müssen Sie zwei Elemente prüfen: (1) Codepage-Umwandlungstabellen, die über die Registerkarte "Erweitert" gesteuert werden; (2) Font-Ersetzungen wie `" Arial, 0 "=" Arial, 204 "` und `" Arial "=" Arial, 204 "` fehlen in der Registry. bytebuster vor 11 Jahren 0
@bytebuster So wie ich es verstehe, ist dies kein Problem meines Systems, sondern das Problem des * Mathematica * PDF-Exports: Er verarbeitet kyrillische Buchstaben nur dann korrekt, wenn das lokale System auf US-Englisch eingestellt ist. Das Problem bleibt für verschiedene lokalisierte Versionen von Wondows XP (nicht nur für Russisch) bestehen. Daher ist es wahrscheinlich die einzige Lösung, das System lokal nur für * Mathematica * auf US-Englisch einzustellen oder lokalisiertes Windows XP nicht zu verwenden. Oder ist es möglich, das System lokal auf US-Englisch einzustellen, aber Syctem so zu konfigurieren, dass alle Nicht-Unicode-Programme ordnungsgemäß funktionieren? Alexey Popkov vor 11 Jahren 0
Dies ist eine gültige Annahme, aber auf einem Screenshot zeigt die Shell keine kyrillische Begrüßung an. Ich würde vorschlagen, die Shell korrekt zu machen und dann zu sehen, ob Mathematica eine spezielle Behandlung erfordert. bytebuster vor 11 Jahren 0
@bytebuster Ich habe den Screenshot als Illustration dargestellt, was passiert, wenn ich das Gebietsschema des Systems auf US-Englisch eingestellt habe. Wenn es auf Russisch eingestellt ist (standardmäßig), ist alles in Ordnung, aber * Mathematica * kann kyrillische Buchstaben nicht korrekt exportieren. Es wird von Microsoft dokumentiert, dass das Ändern des Systemgebietsschemas solche Auswirkungen verursachen kann. Alexey Popkov vor 11 Jahren 0
@ Mr.Wizard Überraschenderweise kann das Problem gelöst werden, ohne * Mathematica * zu verlassen ... Alexey Popkov vor 11 Jahren 0
Ja, ich bin überrascht. Vielen Dank für Ihre Lösung. Mr.Wizard vor 11 Jahren 0

1 Antwort auf die Frage

1
Alexey Popkov

Es scheint, dass das Problem gelöst werden kann, indem der explizite Wert der CharacterEncodingglobalen FE-Option festgelegt wird (mit MMa 8.0.4 und 9.0.0 geprüft):

SetOptions[$FrontEnd, CharacterEncoding -> "UTF8"]; Export["test.pdf", "кириллический текст"] 

Eine äquivalente Methode (ohne Änderung der globalen FE-Einstellungen):

Export["test.pdf",  Style["кириллический текст", CharacterEncoding -> "UTF8"]] 

Anstelle "UTF8"eines kann "UTF-8"oder "ASCII"mit dem gleichen Effekt gesetzt werden. Der Nachteil dieses Ansatzes ist, dass alle nichtenglischen Buchstaben umrissen sind.