Recommend this page to a friend! |
SMPP Class | > | All threads | > | How to send special chars? | > | (Un) Subscribe thread alerts |
|
José Carlos Cruz Parra - 2009-02-22 12:16:18
Hi,
I need to send chars as € (euro), á (aacute),... without using unicode because when I use unicode message maxlength becomes much shorter than initial 160 chars, so one message is splitted in two or more messages, and that has a cost. Is there any solution? The only way I found is to replace those chars before sending the message, for example: € replace with E, á replace with a Thank you a lot.
Suartana - 2009-04-28 08:14:51 - In reply to message 1 from José Carlos Cruz Parra
Hi,
You should using converter from ISO or UTF8 to GSM characterset. Here is the example from me. # set class class GsmCharacterSetConverter { # public member area #************************************************** # convert iso to gsm character * # @param string * # @return string * # $this->onvertCharacters($string) * #*************************************************** public function convertCharacters($string) { # set iso latin 1 to gsm character in array $iso8859ToGsmCharacterSet = array ( 0x0a => 0x0a, 0x0d => 0x0d, 0x20 => 0x20, 0x21 => 0x21, 0x22 => 0x22, 0x23 => 0x23, 0x24 => 0x02, 0x25 => 0x25, 0x26 => 0x26, 0x27 => 0x27, 0x28 => 0x28, 0x29 => 0x29, 0x2a => 0x2a, 0x2b => 0x2b, 0x2c => 0x2c, 0x2d => 0x2d, 0x2e => 0x2e, 0x2f => 0x2f, 0x30 => 0x30, 0x31 => 0x31, 0x32 => 0x32, 0x33 => 0x33, 0x34 => 0x34, 0x35 => 0x35, 0x36 => 0x36, 0x37 => 0x37, 0x38 => 0x38, 0x39 => 0x39, 0x3a => 0x3a, 0x3b => 0x3b, 0x3c => 0x3c, 0x3d => 0x3d, 0x3e => 0x3e, 0x3f => 0x3f, 0x40 => 0x00, 0x41 => 0x41, 0x42 => 0x42, 0x43 => 0x43, 0x44 => 0x44, 0x45 => 0x45, 0x46 => 0x46, 0x47 => 0x47, 0x48 => 0x48, 0x49 => 0x49, 0x4a => 0x4a, 0x4b => 0x4b, 0x4c => 0x4c, 0x4d => 0x4d, 0x4e => 0x4e, 0x4f => 0x4f, 0x50 => 0x50, 0x51 => 0x51, 0x52 => 0x52, 0x53 => 0x53, 0x54 => 0x54, 0x55 => 0x55, 0x56 => 0x56, 0x57 => 0x57, 0x58 => 0x58, 0x59 => 0x59, 0x5a => 0x5a, 0x5f => 0x11, 0x61 => 0x61, 0x62 => 0x62, 0x63 => 0x63, 0x64 => 0x64, 0x65 => 0x65, 0x66 => 0x66, 0x67 => 0x67, 0x68 => 0x68, 0x69 => 0x69, 0x6a => 0x6a, 0x6b => 0x6b, 0x6c => 0x6c, 0x6d => 0x6d, 0x6e => 0x6e, 0x6f => 0x6f, 0x70 => 0x70, 0x71 => 0x71, 0x72 => 0x72, 0x73 => 0x73, 0x74 => 0x74, 0x75 => 0x75, 0x76 => 0x76, 0x77 => 0x77, 0x78 => 0x78, 0x79 => 0x79, 0x7a => 0x7a, 0xa1 => 0x40, 0xa3 => 0x01, 0xa4 => 0x24, 0xa5 => 0x03, 0xa7 => 0x5f, 0xb6 => 0x16, 0xbf => 0x60, 0xc4 => 0x5b, 0xc5 => 0x0e, 0xc6 => 0x1c, 0xc7 => 0x09, 0xc9 => 0x1f, 0xd1 => 0x5d, 0xd6 => 0x5c, 0xd8 => 0x0b, 0xdc => 0x5e, 0xdf => 0x1e, 0xe0 => 0x7f, 0xe4 => 0x7b, 0xe5 => 0x0f, 0xe6 => 0x1d, 0xe8 => 0x04, 0xe9 => 0x05, 0xec => 0x07, 0xf1 => 0x7d, 0xf2 => 0x08, 0xf6 => 0x7c, 0xf8 => 0x0c, 0xf9 => 0x06, 0xfc => 0x7e, ); # extended table iso $extendedTableIso8859ToGsm = array ( 0x5e => 0x14, // ^ 0x7b => 0x28, // { 0x7d => 0x29, // } 0x5c => 0x2f, // \ 0x5b => 0x3c, // [ 0x7e => 0x3d, // ~ 0x5d => 0x3e, // ] 0x7c => 0x40, // | 0x80 => 0x65, // � ); # enxtended alpabet character $EXTENDED_ALPHABET_CHARACTER = 0x1B; # converting table $characterConvertingTable = $iso8859ToGsmCharacterSet; $returnValue = ""; # listing characterset for ($i=0; $i < strlen($string); $i++) { $character = substr($string, $i, 1); $value = -1; if ( array_key_exists( ord($character), $characterConvertingTable ) ) { $value = $characterConvertingTable[ord($character)]; } else { $value = 0x20; // insert a space character for not supported characters } if (!$fromGsmToAscii) { // ascii to gsm if ( array_key_exists( ord($character), $extendedTableIso8859ToGsm ) ) { $returnValue .= chr($EXTENDED_ALPHABET_CHARACTER). chr($extendedTableIso8859ToGsm[ord($character)]); $value = -1; // don't append anything else afterwards } } if ($value != -1) { $returnValue .= chr($value); } } return $returnValue; } #*************************************************** # set ascii to gms character function * # @param string * # @return string * # $this-> asciiToGsm($String) * #*************************************************** public function asciiToGsm($String) { return( $this->convertCharacters($String) ); } } |
info at phpclasses dot org
.