WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Problem med substr och ÅÄÖ (https://www.wn.se/forum/showthread.php?t=1040317)

Magnus_A 2010-02-04 09:59

Suck. Den typen av argument (är du inte nöjd med opensource så skriv om det själv då) trodde jag vi hade lagt bakom oss på ett sånt här forum.
Visst kan jag skriva om hela PHP, blir säkert klar i eftermiddag, eller kanske till lunch om jag jobbar på, men det är strategiska beslut i bakom sådant som vilka teckenkodningar man ska stödja och det är generellt sett påfallande ofta amerikanska utvecklare som utgår från att världen inte behöver något annat än latin1 och att man kan bortse från resten av världens bokstäver.
Rasmus Ledorf som är den ursprunglige skaparen av PHP är inte israel, utan snarare född grönländare, delvis uppvuxen i och numera bosatt i Kanada. Om Gutmans eller Suraski ägnade teckenfrågan en tanke vet jag inte. Jag är tillräckligt gammal för att ha varit med på den tiden man använde 7-bitars teckenkod och vet att det inte var lätt att tänka mångfald om tecken då, men ett dåligt beslut är ett dåligt beslut även om man inte visste bättre då.
Nu har PHP vänt strategi och ska hantera UTF fullt ut vilket gör att jag sliper skriva om hela kodbasen själv som du föreslår. Men gamla funktioner finns tyvärr fortfarande kvar och används antagligen slentrianmässigt även i nyskrivna projekt. I manualen noteras inte att substr() inte hanterar UTF korrekt utan det får man reda på först när man läser användarnas kommentarer. En uppdatering där borde man unna sig.

tartareandesire 2010-02-04 11:02

Citat:

Ursprungligen postat av Magnus_A (Inlägg 20341566)
Det är hål i huvudet att inte bygga funktioner som klarar av UTF från början. Ett tråkigt utslag av amerikansk etnocentricitet.

Nja, det är väl inte helt sant. UTF var inte särskilt utbrett tidigare och flera av Sveriges största sajter använder det ännu inte. Det finns ingen större anledning att byta till UTF om man inte kör det från första början vilket givetvis är att föredra.

Det känns ändå mer logiskt att behålla de gamla funktionerna som de är och införa nya för mb-uppsättningar precis som man gjort. Att köra mb-funktioner är dessutom betydligt långsammare i många fall, särskilt vad gäller strtoupper och strtolower.

Det finns ingen större poäng med att skriva kommentarer på varje sträng-funktion utan där ska endast viktig och EJ överflödig information finnas med för att manualen ska vara just snabb, smidig och översiktlig. Övrigt hör hemma just i användarkommentarerna. Det framgår med all önskvärd tydlighet redan i de inledande styckena i manualen hur tecken och strängar i PHP är uppbyggda:

http://www.php.net/manual/en/language.types.string.php

Citat:

A string is series of characters. Before PHP 6, a character is the same as a byte. That is, there are exactly 256 different characters possible. This also implies that PHP has no native support of Unicode.
Hur variabler och typning fungerar är väl ändå bland det första man lär sig när man tar sig an ett nytt programmeringsspråk?

objx 2010-02-04 13:47

Jag kör UTF-8 på alla webbplatser jag utvecklar.
För att kunna hantera den här typen av problem så använder jag en samling funktioner som finns att ladda ner här:
http://sourceforge.net/projects/phputf8/

Om du inkluderar detta bibliotek som standard i din kod så har du tillgång till alternativ till alla funktioner som hanterar strängar och teckenlängder.
T.ex:
substr -> utf8_substr
strpos -> utf8_strpos
strlen -> utf8_strlen
etc.

Helt ovärderligt för mig i alla fall!

grinditwp 2010-02-04 17:01

Tack för alla bra svar.

Lite synd att diskussioner måste bli så hetsiga och penislängden måste mätas om och om igen här på WN ibland. :P

Men men, antar att någon snart svarar mig att jag kan skapa mitt egna J*VLA forum om jag inte är nöjd ;)

Ha det!


Alla tider är GMT +2. Klockan är nu 02:18.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson