Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-4947220

(process) Runtime.exec() cannot invoke applications with unicode parameters (win)

    Details

    • Type: Bug
    • Status: Closed
    • Priority: P2
    • Resolution: Fixed
    • Affects Version/s: 6, 6u21, 6-pool, 7
    • Fix Version/s: 7
    • Component/s: core-libs
    • Labels:
    • Subcomponent:
    • Resolved In Build:
      b89
    • CPU:
      generic, x86
    • OS:
      generic, windows_2000, windows_2003, windows_xp
    • Verification:
      Verified

      Backports

        Description

        Name: gm110360 Date: 10/31/2003


        FULL PRODUCT VERSION :
        java version "1.4.2"
        Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2-b28)
        Java HotSpot(TM) Client VM (build 1.4.2-b28, mixed mode)

        FULL OS VERSION :
        Microsoft Windows 2000 [Version 5.00.2195]

        A DESCRIPTION OF THE PROBLEM :
        I'm trying to invoke a C++ executable from java using the Runtime.exec() method. The C++ application accepts a filename as a command line argument & opens the file. This C++ app is unicode enabled i.e. it can accept UTF-16 (wide char) parameters. However, when i invoke this application using Java's Runtime.exec() and specify a japanese file name as an argument, the japanese characters get converted to '?' characters by the time they are received in the C++ application. I'm running this application on Windows 2K, default i.e. English version.

        Looking at the source code of Runtime class, it seems that the exec()
        function makes use of a native helper function - execInternal(). This function seems to be converting the parameters from UTF-16 to the system encoding.

        I'm more surprised because the VC++ counterpart of this function i.e. CreateProcessW() does work in this case i.e. it is able to invoke an external application with unicode parameters (say with japanese arguments on an English Windows).

        EXPECTED VERSUS ACTUAL BEHAVIOR :
        EXPECTED -
        Runtime.exec() should be able to invoke external applications with Unicode arguments i.e. the user should be able to pass japanese arguments on an English Windows.

        REPRODUCIBILITY :
        This bug can be reproduced always.
        (Incident Review ID: 207056)
        ======================================================================

          Issue Links

            Activity

            Hide
            martin Martin Buchholz added a comment -
            BT2:EVALUATION

            Java is a pure Unicode system, and so is Windows, if one consistently
            uses the "W" operating system functions at the C level. Java should
            move to doing things this way. Currently a mixture of the W and A functions
            are being used.

            This is too risky and too large a change for Tiger. Hopefully we can finish
            the job in Mustang.
            ###@###.### 2003-10-31
            Show
            martin Martin Buchholz added a comment - BT2:EVALUATION Java is a pure Unicode system, and so is Windows, if one consistently uses the "W" operating system functions at the C level. Java should move to doing things this way. Currently a mixture of the W and A functions are being used. This is too risky and too large a change for Tiger. Hopefully we can finish the job in Mustang. ###@###.### 2003-10-31
            Hide
            defectconv Defect Conversion BT2 (Inactive) added a comment -
            BT2:CONVERTED DATA

            BugTraq+ Release Management Values

            COMMIT TO FIX:
            mustang

            Show
            defectconv Defect Conversion BT2 (Inactive) added a comment - BT2:CONVERTED DATA BugTraq+ Release Management Values COMMIT TO FIX: mustang

              People

              • Assignee:
                sherman Xueming Shen
                Reporter:
                gmanwanisunw Girish Manwani (Inactive)
              • Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:
                  Imported:
                  Indexed: