Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Issue

Zend Server for IBM i provides a menu option to set CCSID and Language options for Apache and FastCGI.  This article tells how to make the recommended settings.

Environment

Zend Server for IBM i running on any supported version of IBM i.

Resolution

Please use the menu option to set CCSID and Language options for FastCGI and Apache.

From the 5250 Command line:

Zend Server 9.1.x, 2018.0.x, 2019.0.x and higher

Info
iconfalse

GO ZENDPHP7/ZSMENU

use option "80. Configurations" and then "2. Set Zend Server Language/CCSID environment"


Zend Server version 6 - 8.5.x

Info
iconfalse
GO ZENDSVR6/ZSMENU

For versions up to 8.0.2, use option "8. Set Zend Server Language/CCSID environment".

For versions 8.5 and higher, use option "80. Configurations" and then "2. Set Zend Server Language/CCSID environment"

Zend Server version 5:

Info
iconfalse
GO ZENDSVR/ZSMENU

use option "8. Set Zend Server Language/CCSID environment".


1)  Under the heading "FastCGI Language and CCSID settings", please set the CCSID to 1208.  Leave the Language ID set to 'C'.

2)  Under the heading "Apache web server settings", please set the value for DefaultFsCCSID and CGIJobCCSID to the recommended value for your language (see note below).

3)  Press Enter to update, and then restart Apache for this change to take effect.

Info
iconfalse
titleNote: To determine the default CCSID for your language, you can try this trick.
From a 5250 command line:       dspjob

On the "Display Job" display, use option "2. Display job definition attributes".  On the "Display Job Definition Attributes" display, page up a few times until you come to the Language entries:

Language identifier . . . . . . . . . . . . . . . :   ENU  
Country or region identifier  . . . . . . . . . . :   US   
Coded character set identifier  . . . . . . . . . :   65535
Default coded character set identifier  . . . . . :   37   

Use the value set for "Default coded character set identifier".  In this example the CCSID to use is '37'.  If you need to include the Euro, please see the additional note below.

Here is an example of the options that would be set in a typical U.S. installation running Zend Server 8.5.x

           Set Zend Server Language/CCSID Environment                       
                                                                            
IBM i server CCSID and Language settings                                    
   System CCSID . . . . . .:  65535                                         
   Job CCSID . . . . . . . .  65535                                         
   Language ID . . . . . . :  ENU                                           
                                                                            
                                                                            
                                                                            
FastCGI Language and CCSID settings (/www/zendsvr6/conf/fastcgi.conf)       
   CCSID (ASCII) . . . . . :  1208   Number, 819(Latin), 1208(UTF-8)...     
   Language ID . . , , , , :  C      en_US, de_DE, fr_FR...                 
                                                                            
Link for ASCII CCSID and Language table codes:                              
http://files.zend.com/help/Zend-Server-IBMi/i5_national_language_support.htm
                                                                            
Apache web server settings (/www/zendsvr/conf/http.conf)                    
   DefaultFsCCSID. . . . . :  37     Number, 37(ENU), 297(FRA), 273(DEU)...
   CGIJobCCSID . . . . . . :  37     Number, 37(ENU), 297(FRA), 273(DEU)...

Find a CCSID that includes the Euro

IBM has provided some enhanced EBCDIC character sets to include the Euro.  If you need the Euro, please find your EBCDIC CCSID (the one used for DefaultFsCCSID) on this page:

Coded character set identifiers

Find your CCSID on this page and click it.  This should take you to a detail page for your CCSID.  For example, if we click on 37 we get to this page:

CCSID 37

In the notes section, there is this text:

Related CCSID with euro is 1140

So, if we need the Euro, we could set DefaultFsCCSID and CGIJobCCSID to 1140.  Of course, this might also be the current CCSID for our job, as described in the main section above.  In this case, we would look at the page for 1140:

CCSID 1140

And see this note:

Related CCSID without euro is 37

Then we would know this is the correct CCSID to contain the Euro, and this is the correct setting.

ibm_db2 settings for DBCS

For DBCS, there are a couple of settings for the ibm_db2 extension that can help insure your DBCS characters are translated correctly for display on the web.  These settings can be accessed in the Zend Server User Interface, on the Configurations -> PHP tab.  Please find ibm_db2 on the list of PHP extensions (under the heading "Name") and click it once to expand the list of related directives for the extension.  Find this directive:

ibm_db2.i5_dbcs_alloc

The default value is "no expanded allocations".  Please use the drop down to select "use expanded allocations".  This will insure that internal buffers used to store DBCS columns are sufficiently large to contain the DBCS data.  Click the "Save" button (upper left, above the table) to save the change, then restart for the change to take effect.

Users of Zend Server 7 or later may also find this directive:

ibm_db2.i5_override_ccsid

This directive can force the use of UTF 8 under some circumstances.  If you are having difficulty getting your DBCS characters to display correctly, please try adjusting this setting.  The default is "default PASE CCSID".  Try changing it to "force utf-8 PASE CCSID (better DB2 operations)".  As before, click "Save" and restart for the change to take effect.  This directive is only available for ibm_db2 running on the IBM i.  It cannot be implemented for connections from other platforms.