What are the considerations for generating CSV files with Umlaut characters in PHP to ensure compatibility with different operating systems and spreadsheet programs?

When generating CSV files with Umlaut characters in PHP, it is important to ensure proper encoding to maintain compatibility with different operating systems and spreadsheet programs. One way to achieve this is by using the UTF-8 encoding for the CSV file. This encoding supports a wide range of characters, including Umlaut characters, and is widely supported across various platforms.

// Set the content type and encoding for the CSV file
header('Content-Type: text/csv; charset=utf-8');
// Create a file handle for output
$output = fopen('php://output', 'w');
// Write the BOM (Byte Order Mark) to indicate UTF-8 encoding
fwrite($output, "\xEF\xBB\xBF");
// Write the CSV header row
fputcsv($output, array('Name', 'City', 'Country'));
// Write data rows with Umlaut characters
fputcsv($output, array('Müller', 'Berlin', 'Germany'));
// Close the file handle
fclose($output);