Avatar billede perh Juniormester
11. april 2023 - 16:10 Der er 20 kommentarer og
1 løsning

tvinge charset på websider i php

Jeg har flyttet et site til en anden server og nu vises æøåÆØÅ osv som rhomber.
Det mystiske er at når jeg ændrer ext på index.php til index.html bliver æøå vist rigtigt.
Jeg bruger ISO_8859-1, da utf8 ikke giver det.

Jeg har prøvet at tvinge php sider til at vise 8859-1 med
header('Content-Type: text/html; charset=ISO_8859-1');
og det virker.
MEN der er rigtig mange undermapper med filer, så det er ikke overkommeligt at ændre alle.

Jeg har prøvet med en htaccess fil
AddDefaultCharset ISO_8859-1
det ændrer ikke noget

jeg har prøvet at tilføje ini_set('default_charset', 'ISO_8859-1'); i php konfigurationen, men heller det virker.

Det må være at fortælle server centralt at åbne alt som 8859-1 ?
Avatar billede puren Ekspert
11. april 2023 - 16:20 #1
har cpanel som back end eller??
Avatar billede perh Juniormester
11. april 2023 - 16:28 #2
Det er Plesk og PHP 7.2.19
Avatar billede arne_v Ekspert
11. april 2023 - 16:48 #3
En anden mulighed var at konvertere det hele til UTF-8. Det vil være en del arbejde, men det vil også være den rigtige løsning fremadrettet.
Avatar billede perh Juniormester
11. april 2023 - 16:51 #4
Jeg kan aldrig få UTF-8 til at vise specialkarakterer?
Avatar billede arne_v Ekspert
11. april 2023 - 17:13 #5
UTF-8 kan godt vise special tegn. Langt flere end ISO-8859-1.

Det virker hvis tegn er labeled UTF-8 *og* er UTF-8.
Avatar billede bvirk Guru
11. april 2023 - 17:14 #6
#4: UTF-8 kan vise alle tegn - men det skal selvfølgeligt skrives i editorens UTF-8 tegnsæt.
Avatar billede perh Juniormester
11. april 2023 - 17:59 #7
Ja, problemet er, at det er gamle sider og de er vist ikke skrevet i utf editor.
Jeg kan skrive nye sider i UltraEdit og de vises korrekt.
Avatar billede arne_v Ekspert
11. april 2023 - 18:36 #8
Der er tools som kan konvertere fra ISO-8859-1/ANSI/CP-1252  til UTF-8.
Avatar billede perh Juniormester
11. april 2023 - 19:21 #9
Tak, men det må være muligt at få serveren til at levere i iso-5988-1 med en enkelt kommando i php.ini eller andre
Avatar billede perh Juniormester
11. april 2023 - 19:22 #10
8859-1
Avatar billede ejvindh Ekspert
11. april 2023 - 20:16 #11
Hvis det er php-filer, så er der jo også en vis sandsynlighed for, at teksten ligger i en mysql-database, og så er vejen frem måske at få dén rettet til i stedet?
Avatar billede perh Juniormester
11. april 2023 - 21:00 #12
Desværre ikke i database. enkeltfiler
Avatar billede bvirk Guru
12. april 2023 - 00:30 #13
Nogle editorer kan skifte tegnsæt sådan at hvis en fil åbnes med det tegnsæt som filen er lavet i, så kan der skiftes - filen blivet markeret ændret der gemmes i det valgte  - mener JEdit kunne.
Avatar billede arne_v Ekspert
12. april 2023 - 00:49 #14
#13

Ja. JEdit kan skifte encoding.
Avatar billede perh Juniormester
12. april 2023 - 09:18 #15
Ja, men så skal jeg åbne 100 sider i 100 undermapper.

Det MÅ være muligt at fortælle serveren, at den skal sende siderne som ISO-8859-1

Jeg prøver at finde server spørge-afdelingen på Eksperten.

Tak for hjælpen indtil videre
Avatar billede bvirk Guru
12. april 2023 - 09:49 #16
Vi kom lidt bort fra hvad du oprindeligt spurgte om. Måske dette tøjler apache:
https://www.askapache.com/htaccess/setting-charset-in-htaccess/
Avatar billede bvirk Guru
12. april 2023 - 10:06 #17
og så lærte vi idag at Content-Type med charset ifølge visse kilder, for browsere, overruler html meta tag - tankevækkende at det ikke virkede med php headeren.
Det er i sådanne situationer jeg konkluderer ved at teste med curl
Avatar billede perh Juniormester
12. april 2023 - 11:04 #18
Tak for dit forslag, jeg har prøvet, men nej.

MEN nu har jeg fundet det i Plesk.
under indstiller for apache og nginx kunne jeg tilføje additional headers:
Content-Type: text/html; charset=ISO_8859-1
gjorde det.

Tak for venlig deltagelse.
Avatar billede bvirk Guru
13. april 2023 - 11:44 #19
Mig der takker - eksperten drukner ikke ligefrem i gode spørgsmål. Vedr 100 filer: Som chatGPT kan kundgøre er konverteringer noget der lettest overlades til de rette tools - Groovy er boilerplate befriet java.

Here's an example Groovy script that converts all files with a given extension in a folder from ISO-8859-1 to UTF-8 encoding:

import java.nio.charset.*

// Define the folder path and file extension
def folderPath = "/path/to/folder"
def fileExtension = ".txt"

// Get a list of files in the folder with the given extension
def files = new File(folderPath).listFiles().findAll { it.isFile() && it.name.endsWith(fileExtension) }

// Loop through the files and convert them from ISO-8859-1 to UTF-8
files.each { file ->
    def sourceContent = file.text(encoding: Charset.forName("ISO-8859-1"))
    file.text = sourceContent.encode(Charset.forName("UTF-8"))
}
Avatar billede arne_v Ekspert
13. april 2023 - 14:00 #20
#19

Groovy - nice.

#17

Ja - HTTP header overruler META tag. Og umiddelbart virker det jo dybt mystisk at en server setting overruler et tag i en fil. Men der er lidt logik i det.

HTTP header er en pæn løsning set fra browser side:
- browser læser headers og bytes->chars er nemt da det er ASCII
- browser ser encoding i header
- browser læser body og bruger encoding til at lave bytes->chars

META tag er noget rod set fra browser side:
- browser læser headers og bytes->chars er nemt da det er ASCII
- browser ser ingen encoding i header
- browser laver et gæt på encoding og læser første del af body og bruger den gættede encoding til at lave bytes->chars
- browser finder META tag og en encoding
- browser genfortolker allerede læste bytes med den nu kendte encoding
- browser fortsætter med at læse resten ag bytes med den nu kendte encoding

Så man favoriserer den pæne løsning over den rodede løsning.
Avatar billede bvirk Guru
15. april 2023 - 15:28 #21
Man rammer muligheden for at html dokumentet kan være i en encoding og @charset indledt  css files i en anden ved at lade header definer encoding for html'en og undlade meta tag.
https://developer.mozilla.org/en-US/docs/Web/CSS/@charset
🕵🕵🕵🕵🕵 i en iso8859-1
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester