changeset 73:c742c8f9ffa3

encodings
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 14 Dec 2016 09:43:08 +0100
parents 83c0a6556e6c
children a976607e46f7
files Sphinx/source/developers.rst Sphinx/source/developers/implementation-notes.rst Sphinx/source/users/configuration.rst
diffstat 3 files changed, 49 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/Sphinx/source/developers.rst	Tue Dec 13 18:00:15 2016 +0100
+++ b/Sphinx/source/developers.rst	Wed Dec 14 09:43:08 2016 +0100
@@ -6,5 +6,6 @@
 
    developers/creating-plugins.rst
    developers/stone.rst
+   developers/db-versioning.rst
+   developers/implementation-notes.rst
    developers/coding-style.rst
-   developers/db-versioning.rst
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Sphinx/source/developers/implementation-notes.rst	Wed Dec 14 09:43:08 2016 +0100
@@ -0,0 +1,43 @@
+.. _implementation-notes:
+
+Implementation notes
+====================
+
+Encodings
+---------
+
+DICOM supports many codepages to encode strings. DICOM instances using
+special characters should contain the ``SpecificCharacterSet
+(0008,0005)`` tag. The latter tag `specifies which codepage
+<http://dicom.nema.org/dicom/2013/output/chtml/part03/sect_C.12.html#sect_C.12.1.1.2>`__
+is used by the DICOM instance. Internally, Orthanc converts all these
+codepages to the `UTF-8 encoding
+<https://en.wikipedia.org/wiki/UTF-8>`__.
+
+In particular, :ref:`plugins <creating-plugins>` must assume that any
+string or JSON file coming from the Orthanc core is encoded using
+UTF-8. Similarly, plugins must use UTF-8 when calling services
+provided by the Orthanc core. The conversion to/from UTF-8 is done
+transparently by the plugin engine.
+
+The :ref:`configuration option <configuration>` ``DefaultEncoding``
+plays an important role. It is used in three cases:
+
+1. If receiving a DICOM instance without the ``SpecificCharacterSet
+   (0008,0005)`` tag, Orthanc will interpret strings within this
+   instance using this default encoding. This is important in
+   practice, as many DICOM modalities are not properly configured with
+   respect to encodings.
+
+2. When answering a :ref:`C-Find query <dicom-find>` (including for
+   worklists), Orthanc will use its default encoding. If one single
+   answer uses a different encoding, it will be transcoded.
+
+3. If creating a new instance (e.g. through the
+   ``/tools/create-dicom`` URI of the :ref:`REST API <rest>`, or
+   through the ``OrthancPluginCreateDicom()`` primitive of the plugin
+   SDK) and if ``SpecificCharacterSet (0008,0005)`` is not provided
+   for this instance, Orthanc will use its default encoding. Note
+   however that if ``SpecificCharacterSet`` is set, Orthanc will
+   transcode the incoming UTF-8 strings to the codepage specified in
+   this tag, and not to the default encoding.
--- a/Sphinx/source/users/configuration.rst	Tue Dec 13 18:00:15 2016 +0100
+++ b/Sphinx/source/users/configuration.rst	Wed Dec 14 09:43:08 2016 +0100
@@ -25,6 +25,10 @@
 * Create a HTTP server for the REST API that listens on the port 8042.
 * Store the Orthanc database in a folder called ``OrthancStorage``.
 
+*Remark:* When specifying paths under Microsoft Windows, backslashes
+(i.e. ``\``) should be either escaped by doubling them (as in ``\\``),
+or replaced by forward slashes (as in ``/``).
+
 To obtain more diagnostic, you can use the ``--verbose`` or the
 ``--trace`` options::