Pamata Informācija > Joomla un saturs utf-8 kodējumā

Joomla un saturs utf-8 kodējumā

 

Ļoti bieži forumos tiek uzdoti jautājumi par problēmām, ko rada utf-8 koda lietošana, Joomla 1.0.x versijā.

(Lai gan oficiāli, Joomla! 1.0.x neatbalsta šo kodējumu.) Ir acīmredzami, ka lietotājiem ir nepieciešamība pēc šī kodējuma veida, savādāk šie jautājumi nebūtu tik bieži forumos sastopami.

Mūsu raksts iepazīstinās Jūs ar utf-8 kodējuma saistītām problēmām, Joomla 1.0.x versijā un piedāvās Jums dažus problēmu atrisinājuma veidus.  

 

Lai vietne pilnīgi izmantotu utf-8 kodējumu, ir jābūt izpildītiem sekojošiem nosacījumiem:

 

  • Datu bāzei ir jābūt ar  utf-8 kodējuma atbalstu, pretējā gadījumā dati var pārpildīt paredzēto glabāšanas apjomu.
    • Divdesmit simbolu virkne, utf-8 formātā, var būt pat līdz 60 baitu garuma. Ja datu bāzes laukam ir atvēlēti 20 simbli, tad iespējams utf8 kodējumā tas var aizņemt 20 - 60 baitus. Ja datu bāze ir ar utf-8 atbalstu, tad lauka izmērs tiks mainīts tā lai tajā ietilptu šīs 20 zīmes. Ja datu bāze neatbalsta utf-8 kodējumu, iespējams tādā laukā varēs ierakstīt tikai 6 simbolus, un rezultāts, ko redzēs lietotājs būs sabojāts vai saīsinātas virknes. Datu bāzei bez utf-8 atbalsta risinājums būtu palielināt datu glabāšanas laukus.
  • Datubāzes savienojumam ar PHP programmu nepieciešams savstarpējais utf-8 kodējuma atbalsts, pretējā gadījumā var notikt nevēlama datu pārveidošana.

  • Simbolu virknes utf-8 kodējumā jāapstrādā ar funkcijām, kas atbalsta vairākbaitu simbolu kodējumu.

    • Līdz šim PHP virkņu apstrādes funkcijas neatbalsta utf-8 formātu un var bojāt datus  (materiālā aprakstītas ar utf8 saistītās problēmas: http://www.phpwact.org/php/i18n/utf-8). Ir pieejama papildinājuma paka priekš PHP 4 un 5, kurā ir funkcijas, kas atbalsta utf-8 kodējumu  ('mb_string'). Jāņem vērā tas, ka šis papildinājums nav iekļauts PHP kodolā, iespējams tas ir jāuzstāda pašiem. PHP programmas kods arī ir atbilstoši jāpārveido, lai lietotu vairāk baitu simbolu virkņu apstrādes funkcijas.  Paredzams, ka PHP 6 kodolā būs iekļauts unicode atbalsts
    • HTML lapas kodējumam jābūt  utf-8 (nomainot „charset” valodas failā, kas ir jau izdarīts, ja lietotojat mūsu tulkojumu)

 

 

Varbūt neko daudz nevajag darīt, tikai mainīt lapas kodējumu?

 

 

Problēmas ar simbolu attēlošanu nebūs tad, ja lietosiet tikai latīņu alfabēta burtus, kā angļu valodā. Tiklīdz saturā parādīsies specifiskas rakstzīmes, tā tās tiks kropļotas. Latīņu alfabēta burti ir kodēti ar pirmajiem 7 bitiem gan ASCII gan UTF-8 kodējumā, bet specifisko simoblu kodi jau ir garāki,  ja programmas nesapratīs atšķirību star vienbaita un vairāk baitu sibmola kodējumu, tad vairāk baitu simboli tiks sadalīti divos simbolos.  Tātad, ja lietojat tikai valodu, kas izmanto tikai latīņu alfabēta burtus, tad utf-8 kodējums Jums nav vajadzīgs, ja šie specifiskie simboli ir vajadzīgi, kā latviešu valodā "āūīēšķļņž", tad veiciet darbības, kas aprakstītas tekstā tālāk.

Kā ar  Joomla! 1.5?

Informācija atrodama šajā materiālā:  http://dev.joomla.org/component/option,com_jd-wp/Itemid,33/p,16/

 

Vai ir iespējams kāds risinājums, lai Joomla! 1.0.x darbotos ar saturu utf-8 kodējumā?

 

Pieliekot nelielas pūles var panākt, lai Joomla! 1.0.x. darbotos ar saturu UTF-8 kodējumā. Lai to  panāktu, jāizpildat sekojoši nosacījumi: 

  • Pārliecinaties, ka izmantojatt MySQL 4.1.2 versiju vai jaunāku. 
  • Pirms Joomla! uzstādīšanas, izveidojiet tukšu datu bāzi. Iestatiet uf8_latvian kolāciju kā noklusēto.
  •  Lietojiet tulkojumus  utf-8 kodējumā ( dažādiem komponentiem, moduļiem, redaktoriem, utt.).
  • Uzstādiet Joomla! izmantojot izveidoto datu bāzi. Pēc uzstādīšanas pārliecinieties, ka tai datu bāzei ir utf-8 kodējums  visiem tekstu laukiem, lai pārliecienātos, ka Joomla insatlācija nav izveidojusi citu datubāzi un darbojas ar to).
  •  Iestatīt utf-8 kā lapas kodējumu -  'charset=utf-8' iekš _ISO define tulkojuma failā. 
  • Atkomentējiet vienu rindiņu  failā includes/database.php apmēram 102 rinda  (skatīt kodu zemāk)

$this->_table_prefix = $table_prefix;
//@mysql_query("SET NAMES 'utf8'", $this->_resource); // THIS IS THE LINE TO UNCOMMENT
$this->_ticker = 0;
$this->_og = array()

 

Ņemiet vērā, ka augstāk minētās darbības nenodrošina pilnīgu utf-8 atbalstu  Joomla 1.0.x versijai. Visas virknes joprojām tiks aptsrādātas kā vienbita simbolu masīvi. Šis risinājums tomēr darbojas, vienīgi iespējamas kļūdas virkņu apstrādē.

 

Raksts tulkots no angļu valodas un oriģināls ir izlasāms joomla.org portālā.
Pēdējās izmaiņas ( Ceturtdiena, 13 novembris 2008 11:33 )  

Pievienot komentāru

Aizsardzības kods
Atjaunināt

Pieslēgties



Katalogs